二叉树的层次遍历

此博客链接: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;
    }
}

结果

 

posted @ 2020-12-07 15:05  萍2樱释  阅读(87)  评论(2编辑  收藏  举报