这边借助两个数据结构实现,HashMap 记录每个节点层 Queue 进行层序遍历
最后返回即可
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer> > result=new ArrayList<ArrayList<Integer> >();
if(pRoot==null){
return result;
}
//广度优先遍历,很简单的层序遍历,队列
Queue<TreeNode> queue=new LinkedList<>();
ArrayList<Integer> item=new ArrayList<Integer>();
result.add(item);
queue.add(pRoot);
//记录当前层
int level=1;
HashMap<TreeNode,Integer> map=new HashMap<>();
//记录节点层
map.put(pRoot,1);
while(!queue.isEmpty()){
TreeNode node=queue.poll();
int curLevel=map.get(node);
if(curLevel!=level){
//下一层
item=new ArrayList<>();
result.add(item);
level=curLevel;
}
item.add(node.val);
if(node.left!=null){
map.put(node.left,curLevel+1);
queue.add(node.left);
}
if(node.right!=null){
map.put(node.right,curLevel+1);
queue.add(node.right);
}
}
return result;
}
}
京公网安备 11010502036488号