从上到下打印二叉树——层序遍历二叉树

简介:

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

 

 

例如输入

 

      8
    /  \
   6    10
  /\     /\
 5  7   9  11

 

输出8   6   10   5   7   9   11。

 

二叉树结点的定义如下:

struct BinaryTreeNode
{
    int             m_nValue;
    BinaryTreeNode *m_pLeft;
    BinaryTreeNode *m_pRight;
};

从上到下打印二叉树的规律:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。

既然我们已经确定数据容器是一个队列了,现在的问题就是如何实现队列。实际上我们无需自己动手实现,因为STL已经为我们实现了一个很好的deque(两端都可以进出的队列)。下面是用deque实现的参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void  PrintFromTopToBottom(BinaryTreeNode *pTreeRoot)
{
     if (!pTreeRoot)
         return ;
 
     std::deque<BinaryTreeNode*> dequeTreeNode;
 
     dequeTreeNode.push_back(pTreeRoot);
 
     while (dequeTreeNode.size())
     {
         BinaryTreeNode *pNode = dequeTreeNode.front();
         dequeTreeNode.pop_front();
 
         printf ( "%d "  , pNode->m_nValue);
 
         if (pNode->m_pLeft)
             dequeTreeNode.push_back(pNode->m_pLeft);
 
         if (pNode->m_pRight)
             dequeTreeNode.push_back(pNode->m_pRight);
     }
}

  




本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3405282.html,如需转载请自行联系原作者

目录
相关文章
|
6月前
排序二叉树的创建及先序、中序、后序输出二叉树
排序二叉树的创建及先序、中序、后序输出二叉树
27 1
|
4月前
二叉树基础oj练习(对称二叉树、翻转二叉树、另一棵树的子树二叉树的构建及遍历)
二叉树基础oj练习(对称二叉树、翻转二叉树、另一棵树的子树二叉树的构建及遍历)
26 0
|
3月前
|
算法
《剑指offer》之从上到下打印二叉树Ⅰ、Ⅱ、Ⅲ
《剑指offer》之从上到下打印二叉树Ⅰ、Ⅱ、Ⅲ
26 0
|
5月前
|
算法 Java 程序员
【算法训练-二叉树 一】【遍历二叉树】前序遍历、中序遍历、后续遍历、层序遍历、锯齿形层序遍历、二叉树右视图
【算法训练-二叉树 一】【遍历二叉树】前序遍历、中序遍历、后续遍历、层序遍历、锯齿形层序遍历、二叉树右视图
44 0
|
6月前
|
存储 算法 C++
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
60 0
|
7月前
53 # 层序遍历跟反转二叉树
53 # 层序遍历跟反转二叉树
21 0
|
11月前
|
算法
【算法】二叉排序树:创建二叉树,并以中序遍历输出
【算法】二叉排序树:创建二叉树,并以中序遍历输出
186 0
|
存储
刷题之完全二叉树的权值和小字辈及根据后序和中序遍历输出先序遍历
刷题之完全二叉树的权值和小字辈及根据后序和中序遍历输出先序遍历
121 0
|
算法 C语言
【递归调用在二叉树中的应用】前序遍历、中序遍历、后序遍历、求二叉树叶子结点及复制二叉树的C语言实现
【递归调用在二叉树中的应用】前序遍历、中序遍历、后序遍历、求二叉树叶子结点及复制二叉树的C语言实现
124 0
【递归调用在二叉树中的应用】前序遍历、中序遍历、后序遍历、求二叉树叶子结点及复制二叉树的C语言实现
|
存储 C++
二叉树的四种遍历方式(前序遍历,中序遍历,后序遍历,层序遍历)C++语言
二叉树的四种遍历方式(前序遍历,中序遍历,后序遍历,层序遍历)C++语言
202 0