import java.util.ArrayList;
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> temp=new ArrayList<>();//用来存储每一层节点的val
ArrayList<TreeNode>list=new ArrayList<>();//用来存储每一层的节点
if(pRoot==null){
return result;
}
list.add(pRoot);
int now=1;//表示正在遍历这一层的节点数,第一层节点数位1,只有一个根节点
int next=0;//用来记录下一层的节点数,初始值为0
while(!list.isEmpty()){
TreeNode node=list.remove(0);//每次都是删除链头结点
temp.add(node.val);//把头结点的值add到temp链表中
now--;
if(node.left!=null){
list.add(node.left);
next++;
}
if(node.right!=null){
list.add(node.right);
next++;
}
if(now==0){//表示这一层节点已经遍历完了
result.add(new ArrayList<>(temp));//把temp链表加到result中
now=next;
next=0;
temp.clear();
}
}
return result;
}
}
二叉树的层次遍历
最新推荐文章于 2024-01-16 09:17:26 发布