Skip to content

Commit 454da3a

Browse files
author
laileon
committed
print tree
1 parent 4876991 commit 454da3a

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.blankj.custom.pretest;
2+
3+
import com.blankj.custom.structure.TreeNode;
4+
5+
import java.util.LinkedList;
6+
import java.util.Queue;
7+
8+
public class PrintTree {
9+
public static void main(String[] args) {
10+
TreeNode node0 = new TreeNode(0, null, null);
11+
TreeNode node7 = new TreeNode(7, null, null);
12+
TreeNode node9 = new TreeNode(9, null, null);
13+
TreeNode node1R = new TreeNode(1, null, null);
14+
TreeNode node1L = new TreeNode(1, node0, node7);
15+
TreeNode node3 = new TreeNode(3, node9, node1R);
16+
TreeNode node2 = new TreeNode(2, node1L, node3);
17+
printTree(node2);
18+
}
19+
20+
public static void printTree(TreeNode root) {
21+
if (root == null)
22+
return;
23+
Queue<TreeNode> queue = new LinkedList<>();
24+
25+
// 需要额外两个变量。一个变量用来保存当前层 还未打印的结点个数,另一个变量保存下一层待打印的结点个数
26+
int current;//当前层 还未打印的结点个数
27+
int next;//下一层结点个数
28+
StringBuilder nodeVal = new StringBuilder();
29+
30+
queue.offer(root);
31+
current = 1;
32+
next = 0;
33+
while (!queue.isEmpty()) {
34+
TreeNode currentNode = queue.poll();
35+
nodeVal.append("(").append(currentNode.val).append(")").append(",");
36+
current--;
37+
38+
if (currentNode.left != null) {
39+
//queue加入节点
40+
queue.offer(currentNode.left);
41+
next++;
42+
}
43+
if (currentNode.right != null) {
44+
//queue加入节点
45+
queue.offer(currentNode.right);
46+
next++;
47+
}
48+
if (current == 0) {
49+
current = next;
50+
next = 0;
51+
System.out.println(nodeVal.toString().substring(0, nodeVal.lastIndexOf(",")));
52+
nodeVal = new StringBuilder();
53+
}
54+
}
55+
}
56+
}

src/com/blankj/custom/structure/TreeNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class TreeNode {
2525

2626
public TreeNode(int val, TreeNode left, TreeNode right) {
2727
this.val = val;
28-
this.left = null;
29-
this.right = null;
28+
this.left = left;
29+
this.right = right;
3030
}
3131
}

0 commit comments

Comments
 (0)