重新建了一个Node数据结构,Node{TreeNode 树节点,level 层次},进行层次遍历BFS。
书上的用两个变量控制将每层树节点打印到一行,很nice~
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
class Node {
TreeNode treeNode;
int level;
public Node(TreeNode treeNode, int level) {
this.treeNode = treeNode;
this.level = level;
}
}
public class Solution {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
Queue<Node> queue = new LinkedList<>();
if (pRoot == null) {
return list;
}
queue.add(new Node(pRoot, 1));
ArrayList<Integer> arraylist = new ArrayList<>();
int level = 1;
while (!queue.isEmpty()) {
Node node = queue.remove();
if (node.level != level) {
list.add(arraylist);
arraylist = new ArrayList<>();
level++;
}
arraylist.add(node.treeNode.val);
if (node.treeNode.left != null) {
queue.add(new Node(node.treeNode.left, node.level + 1));
}
if (node.treeNode.right != null) {
queue.add(new Node(node.treeNode.right, node.level + 1));
}
}
list.add(arraylist);
return list;
}
}
京公网安备 11010502036488号