二叉树层次遍历(算法)
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】】

浙公网安备 33010602011771号