二叉树层次遍历(算法)

复制代码
 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 @   Q子  阅读(152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示