题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
题目链接:牛客网
解题思路
import java.util.*;
public class Main {
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.right = new TreeNode(2);
root.left = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
ArrayList list = print(root);
printList(list);
}
public static ArrayList<ArrayList<Integer>> print(TreeNode pRoot) {
Queue<TreeNode> queue = new LinkedList<>();
ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
queue.add(pRoot);
while(!queue.isEmpty()) {
ArrayList<Integer> list = new ArrayList<>();
int cnt = queue.size();
while(cnt-- > 0) {
TreeNode node = queue.poll();
if (node == null) {
continue;
}
list.add(node.val);
queue.add(node.left);
queue.add(node.right);
}
if (list.size() != 0) {
ret.add(list);
}
}
return ret;
}
public static void printList(ArrayList list) {
for (int i = 0;i < list.size();i++) {
System.out.println(list.get(i) + " ");
}
}
}
测试结果
![](https://img.haomeiwen.com/i9134822/5aeb562ae2bdf256.png)
网友评论