二叉树的层次遍历
Posted pszp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的层次遍历相关的知识,希望对你有一定的参考价值。
题目 :给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
返回其层次遍历结果:
[ [3], [9,20], [15,7] ]
思路分析:
因为需要按层次遍历节点,所以我们可以使用队列先进先出的特点来存储每层节点的值
每取出一个节点就将该节点的左右节点存入队列当中
代码如下:
1 public List<List<Integer>> levelOrder(TreeNode root) { 2 List list= new ArrayList(); 3 if(root==null){ 4 return list; 5 } 6 Queue<TreeNode> queue= new LinkedList(); 7 queue.add(root); 8 while(true){ 9 List<Integer> list1=new ArrayList(); 10 int size= queue.size(); 11 if(size==0){ 12 return list; 13 } 14 for(int i=0;i<size;i++){ 15 TreeNode t=queue.poll(); 16 list1.add(t.val); 17 if(t.left!=null){ 18 queue.add(t.left); 19 } 20 if(t.right!=null){ 21 queue.add(t.right); 22 } 23 } 24 list.add(list1); 25 } 26 27 }
通过for循环来控制当层的元素,当队列中没有元素时,退出迭代。
以上是关于二叉树的层次遍历的主要内容,如果未能解决你的问题,请参考以下文章
python-leetcode102-树的宽度遍历二叉树的层次遍历