谏言:
1:精致的人,往往会追求精致的代码;
2:一入递归深似海,从此offer是路人,能用迭代的就不要用递归;
public class Solution {
//入口
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
return func(root);//调用
}
//遍历
public ArrayList<ArrayList<Integer>> func(TreeNode root){
if(root==null) return result;//边界
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
ArrayList<Integer> list = new ArrayList<>();
int size = queue.size();//本次长度
while(size-->0){
TreeNode node = queue.poll();//剔除
list.add(node.val);//加入小list
if(node.left!=null) queue.offer(node.left);//让外循环继续
if(node.right!=null) queue.offer(node.right);//让外循环继续
}
result.add(list);//加入大list
}
return result;//完成
}
//全局变量
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
}

京公网安备 11010502036488号