【剑指offer】面试题23:从上往下打印二叉树

    xiaoxiao2021-03-25  108

    题目:从上往下打印二叉树的每个结点,同一层的结点按照从左往右的顺序打印。

    思路:我们可以用一个队列来保存我们当前结点的左右子树,然后进行出队分别访问左右子树结点,进行打印。

    #include<iostream> #include<deque> using namespace std; struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode * m_pRight; }; void PrintFromTopToBottom(BinaryTreeNode* pTreeNode) { if (pTreeNode == NULL) { return; } //创建队列,将当前的结点的左右孩子指针分别放到容器中,方便使用 std::deque<BinaryTreeNode*>dequeTreeNode; dequeTreeNode.push_back(pTreeNode); //我们用队列来解决按层进行打印,也就是我们不需递归,每从队列中取出要打印的结点,并且把该节点的左右子结点保存到队列中即可 while (dequeTreeNode.size()) { BinaryTreeNode* pNode = dequeTreeNode.front(); printf("%d ", pNode->m_nValue); //该节点打印完后,我们进行弹出 dequeTreeNode.pop_front(); if (pNode->m_pLeft) { dequeTreeNode.push_back(pNode->m_pLeft); } if (pNode->m_pRight) { dequeTreeNode.push_back(pNode->m_pRight); } } }
    转载请注明原文地址: https://ju.6miu.com/read-8350.html

    最新回复(0)