[剑指offer]面试题23:从上往下打印二叉树
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[剑指offer]面试题23:从上往下打印二叉树相关的知识,希望对你有一定的参考价值。
面试题23:从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出8、6、10、5、7、9、11。
二叉树结点的定义如下:
struct BinaryTreeNode
{
int value;
BinaryTreeNode *lchild;
BinaryTreeNode *rchild;
};
思路:
每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。
代码如下:
void PrintFromTopToBottom(BinaryTreeNode *pTreeRoot)
{
if (!pTreeRoot) return;
deque<BinaryTreeNode *> dequeTreeNode;
dequeTreeNode.push_back(pTreeRoot);
while (dequeTreeNode.size())
{
BinaryTreeNode *pNode = dequeTreeNode.front();
dequeTreeNode.pop_front();
cout << pNode->value << " ";
if (pNode->lchild) dequeTreeNode.push_back(pNode->lchild);
if (pNode->rchild) dequeTreeNode.push_back(pNode->rchild);
}
}
本题考点:
● 考查思维能力。按层从上到下遍历二叉树,这对很多应聘者是个新概念,要在短时间内想明白遍历的过程不是一件容易的事情。应聘者通过具体的例子找出其中的规律并想到基于队列的算法,是解决这个问题的关键所在。
● 考查应聘者对二叉树及队列的理解。
以上是关于[剑指offer]面试题23:从上往下打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章