32剑指OFFER之从上到下打印2叉树

参考资料:

[1]剑指OFFER课本

关键词:

不需要递归!!!

思路:

把根节点放入队列中,要打印根节点,把把根节点的左右子节点放入队列中
反复这样下去

自己的答案:
vector PrintFromTopToBotton(BinaryTreeNode* pRoot)
{
    vector vecPrint;

    //不需要递归
    //把根节点放入队列中,从队列中push出来,打印并把节点的左右节点放入队列中
    //如此循环反复

    if (pRoot == nullptr)
        return vecPrint;
    
    queue queTmp;

    queTmp.push(pRoot);

    while (!queTmp.empty())
    {
        BinaryTreeNode* pNode = queTmp.front();
        vecPrint.push_back(pNode->m_nKey);
        queTmp.pop();

        if (pNode->m_pLeft)
            queTmp.push(pNode->m_pLeft);
        if (pNode->m_pRight)
            queTmp.push(pNode->m_pRight);
    }
    
    return vecPrint;
}

你可能感兴趣的:(32剑指OFFER之从上到下打印2叉树)