题目:

解决方法: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);
}
该博客介绍了如何使用宽度优先搜索(BFS)和深度优先搜索(DFS)两种方法来实现二叉树的层次遍历。提供了详细的Java代码实现,包括使用队列的BFS方法和递归的DFS方法,分别将每层节点的值存储到二维数组中。
239

被折叠的 条评论
为什么被折叠?



