LeetCode: Binary Tree Level Order Traversal 层序遍历二叉树

简介:

 Binary Tree Level Order Traversal 

题目描述:

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]

题目解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
      * 实质是二叉树的广度优先搜索
      * 利用一个辅助队列保存被访问的当前节点的左右孩子,
      * 调整进出队列的顺序以实现层序遍历
      */
     public  List<List<Integer>> levelOrder(TreeNode root) {
          List<List<Integer>> result= new  ArrayList<>();
          
          if (root== null ){
             return  result;
          }
         
         /**
          * 一般来说,队列的实现选择LinkedList即可
          * 队列保存节点就不用找什么变量了
          */
         Queue<TreeNode> queue= new  LinkedList<>();
         queue.offer(root);
         //首先把头结点的值保存到结果集,然后把左右子节点分别进入队列
        while (!queue.isEmpty()){ //需要使用isEmptyy判断,不能使用null
            List<Integer> temp= new  ArrayList<>();
            /**
             * error!这里对进行循环的过程,队列长度是在不断变化的
             * size需要等于队列出队前的长度
             */
            int  size =queue.size();
            for ( int  i= 0 ;i<size;i++){
                TreeNode node=queue.poll();
                temp.add(node.val);
                if (node.left!= null )
                  queue.offer(node.left);
                if (node.right!= null )
                  queue.offer(node.right);
            }
            //当前队列全部poll,到这里已经完成了一层的遍历
            result.add(temp);
        }
         return  result;
     }

  


目录
相关文章
|
18小时前
leetcode代码记录(二叉树的所有路径
leetcode代码记录(二叉树的所有路径
10 0
|
18小时前
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
8 0
|
18小时前
leetcode代码记录(二叉树的最小深度
leetcode代码记录(二叉树的最小深度
9 0
|
18小时前
leetcode代码记录(二叉树的最大深度
leetcode代码记录(二叉树的最大深度
8 0
|
18小时前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
8 0
|
18小时前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
11 0
|
18小时前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
25 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
18小时前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
25 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
18小时前
|
存储 算法 测试技术

热门文章

最新文章