二叉树的层次遍历
此博客链接:https://www.cnblogs.com/ping2yingshi/p/14097221.html
二叉树的层次遍历
题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]题解
利用队列先进先出的特点层次遍历,先把根节点放入到队列中,然后跟节点出队列,把左右孩子进队列,然后每出一个节点,就把改节点的左右孩子加入到队列中,直到队列为空。
注意
1.结果集中需要定义列表的列表。
2.每次判断队列中元素是否为空时,就需要记录现有队列中的长度。队列中存在的元素就是同一层上的元素。
代码
class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue <TreeNode> queue= new LinkedList<>(); List<List<Integer>> result=new ArrayList(); if(root==null) return result; queue.add(root); while(!queue.isEmpty()) { int len=queue.size(); List <Integer> list=new ArrayList(); TreeNode temp; while(len>0){ temp= queue.poll(); if(temp.left!=null) { queue.add(temp.left); } if(temp.right!=null) { queue.add(temp.right); } list.add(temp.val); len--; } result.add(list); } return result; } }
结果
出来混总是要还的