题目:
解决方法:BFS队列、DFS递归
1.队列
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
if(root==null)
return list;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
int cnt = queue.size();
ArrayList<Integer> list0 = new ArrayList<>();
for(int i=0;i<cnt;i++){
TreeNode t = queue.poll();
list0.add(t.val);
if(t.left!=null)
queue.add(t.left);
if(t.right!=null)
queue.add(t.right);
}
list.add(list0);
}
return list;
}
2.递归
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
dfs(res,root,0);
return res;
}
public static void dfs(ArrayList<ArrayList<Integer>> list,TreeNode root,int level){
if(root==null)
return;
if(list.size()==level)
list.add(new ArrayList<>());
list.get(level).add(root.val);
dfs(list,root.left,level+1);
dfs(list,root.right,level+1);
}