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

Posted wylwyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印相关的知识,希望对你有一定的参考价值。

题目:

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

 

解答:

首先创建BinaryTreeNode

 1 public class BinaryTreeNode {
 2     int data;
 3     BinaryTreeNode lchind;
 4     BinaryTreeNode rchind;
 5 
 6     public BinaryTreeNode(int data) {
 7         this.data = data;
 8         lchind = null;
 9         rchind = null;
10     }
11 
12     private int getData() {
13         return data;
14     }
15 
16     private BinaryTreeNode getLchildNode() {
17         return lchind;
18     }
19 
20     private void setLchildNode(BinaryTreeNode node) {
21         lchind = node;
22     }
23 
24     private BinaryTreeNode getRchildNode() {
25         return rchind;
26     }
27 
28     private void setRchildNode(BinaryTreeNode node) {
29         rchind = node;
30     }
31 }

接着:

 1 import java.util.*;
 2 
 3 public class Solution {
 4 
 5     public static void main(String[] args) {
 6         BinaryTreeNode node1=new BinaryTreeNode(8);
 7         BinaryTreeNode node2=new BinaryTreeNode(6);
 8         BinaryTreeNode node3=new BinaryTreeNode(10);
 9         BinaryTreeNode node4=new BinaryTreeNode(5);
10         BinaryTreeNode node5=new BinaryTreeNode(7);
11         BinaryTreeNode node6=new BinaryTreeNode(9);
12         BinaryTreeNode node7=new BinaryTreeNode(11);
13         node1.setLchildNode(node2);node1.setRchildNode(node3);
14         node2.setLchildNode(node4);node2.setRchildNode(node5);
15         node3.setLchildNode(node6);node3.setRchildNode(node7);
16 
17         printFromTopToBottom(node1);
18     }
19 
20     private static void printFromTopToBottom(BinaryTreeNode root) {
21         if(root == null) {
22             return;
23         }
24 
25         Queue<BinaryTreeNode> queue = new LinkedList<BinaryTreeNode>();
26 
27         queue.add(root);
28 
29         while(!queue.isEmpty()) {
30             BinaryTreeNode node = queue.poll();
31             System.out.println(node.getData());
32 
33             if(node.getLchildNode() != null) {
34                 queue.add(node.getLchildNode());
35             }
36 
37             if(node.getRchildNode() != null) {
38                 queue.add(node.getRchildNode());
39             }
40         }
41     }
42 }

 

以上是关于从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印的主要内容,如果未能解决你的问题,请参考以下文章

Java 剑指offer(31)从上往下打印二叉树

从上往下打印二叉树

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

Acwing43 不分行从上往下打印二叉树

从上往下打印二叉树——23

《剑指offer》第三十二题I:不分行从上往下打印二叉树