二叉树层次遍历(算法)

 1 public ArrayList<ArrayList<Integer>> LevelQuery(TreeNode root){
 2     //存放返回结果
 3     ArrayList<ArrayList<Integer>> restList = new ArrayList<>();
 4     
 5     if(root==null)
 6         return restList;
 7     
 8     //存放当前层节点
 9     ArrayList<TreeNode> level = new ArrayList<>();
10     level.add(root);
11 
12     while(!level.isEmpty()){
13         //存放当前层结果
14         ArrayList<Integer> levelRest = new ArrayList<>();
15         //存放下一层节点 
16         ArrayList<TreeNode> nextNode = new ArrayList<>();
17         for(TreeNode node:level){
18             levelRest.add(node.val);
19             if(node.left!=null)
20                 nextNode.add(node.left);
21             if(node.right!=null)
22                 nextNode.add(node.right);
23         }
24         level = nextNode;//替换到处理下一层
25         restList.add(levelRest);
26     }
27     return restList;
28 }

代码分析

进行每层遍历,将每层的结果存入List , 输出结果应为【【1】,【2,3】,【4,5】】

       

 

  

posted @ 2022-01-05 10:07  Q子  阅读(159)  评论(0)    收藏  举报