从上往下打印二叉树

简介:

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

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

    C#实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  static  void  PrintFromTopToBottom(BinaryTreeNode pTreeRoot)
         {
             if  (pTreeRoot ==  null )
                 return ;
 
             Queue<BinaryTreeNode> quequeNode =  new  Queue<BinaryTreeNode>();
             quequeNode.Enqueue(pTreeRoot);
 
             while  (quequeNode.Count > 0)
             {
                 BinaryTreeNode pNode = quequeNode.Dequeue();
 
                 Console.Write(pNode.value +  "\t" );
 
                 if  (pNode.left !=  null )
                     quequeNode.Enqueue(pNode.left);
                 if  (pNode.right !=  null )
                     quequeNode.Enqueue(pNode.right);
             }
         }

    Java实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public  static  void  PrintFromTopToBottom(BinaryTreeNode pTreeRoot) {
         if  (pTreeRoot ==  null )
             return ;
 
         LinkedList<BinaryTreeNode> quequeNode =  new  LinkedList<BinaryTreeNode>();
         quequeNode.add(pTreeRoot);
 
         while  (quequeNode.size() >  0 ) {
             BinaryTreeNode pNode = quequeNode.removeFirst();
 
             System.out.print(pNode.value +  "\t" );
 
             if  (pNode.left !=  null )
                 quequeNode.add(pNode.left);
             if  (pNode.right !=  null )
                 quequeNode.addLast(pNode.right);
         }
     }

    Python实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@staticmethod
     def  printFromTopToBottom(pTreeRoot):
         """
         从上往下打印二叉树
         从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
         :param pTreeRoot:
         :return:
         """
         if  pTreeRoot  = =  None :
             return
 
         queueNode  =  []
         queueNode.append(pTreeRoot)
 
         while  len (queueNode) >  0 :
             pNode  =  queueNode[ 0 ]
             queueNode  =  queueNode[ 1 :]
             print (pNode.value, end = " " )
 
             if  pNode.left ! =  None :
                 queueNode.append(pNode.left)
             if  pNode.right ! =  None :
                 queueNode.append(pNode.right)



本文转自 许大树 51CTO博客,原文链接:http://blog.51cto.com/abelxu/1975141,如需转载请自行联系原作者
相关文章
|
2月前
|
算法
《剑指offer》之从上到下打印二叉树Ⅰ、Ⅱ、Ⅲ
《剑指offer》之从上到下打印二叉树Ⅰ、Ⅱ、Ⅲ
26 0
【剑指offer】-从上往下打印二叉树-22/67
【剑指offer】-从上往下打印二叉树-22/67
|
4月前
|
存储
【剑指offer】-把二叉树打印成多行-43/67
【剑指offer】-把二叉树打印成多行-43/67
|
4月前
|
存储
【剑指offer】- 按之字形顺序打印二叉树-45/67
【剑指offer】- 按之字形顺序打印二叉树-45/67
|
9月前
1366:二叉树输出(btout)
1366:二叉树输出(btout)
|
10月前
剑指offer_二叉树---从上往下打印二叉树
剑指offer_二叉树---从上往下打印二叉树
40 0
|
10月前
剑指offer_二叉树---把二叉树打印成多行
剑指offer_二叉树---把二叉树打印成多行
45 0
|
10月前
剑指offer_二叉树---之字形打印二叉树
剑指offer_二叉树---之字形打印二叉树
38 0
|
10月前
剑指offer 33. 之字形打印二叉树
剑指offer 33. 之字形打印二叉树
52 0
输出二叉树
#### [655. 输出二叉树](https://leetcode.cn/problems/print-binary-tree/)