給定一個二叉樹,返回其按層次遍歷的節(jié)點值绎巨。 (即逐層地桨仿,從左到右訪問所有節(jié)點)喜庞。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
image.png
思路
利用隊列遍歷二叉樹么鹤,內(nèi)層循環(huán)次數(shù)是每層節(jié)點數(shù)终娃,每遍歷完一層味廊,加入list
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(root==null){
return list;
}
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.offer(root);
while(!q.isEmpty()){
List<Integer> li=new ArrayList<Integer>();
int size=q.size();
for(int i=0;i<size;++i){
TreeNode t=q.poll();
li.add(t.val);
if(t.left!=null){
q.offer(t.left);
}
if(t.right!=null){
q.offer(t.right);
}
}
list.add(li);
}
return list;
}
}
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
set(root,0,list);
return list;
}
public void set(TreeNode t,int level,List<List<Integer>> list){
if(t==null){
return ;
}
if(level==list.size()){
list.add(new ArrayList());
}
list.get(level).add(t.val);
set(t.left,level+1,list);
set(t.right,level+1,list);
}
}