`
frank-liu
  • 浏览: 1666007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: 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,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

 

return its level order traversal as:

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

原问题链接:https://leetcode.com/problems/binary-tree-level-order-traversal/

 

问题分析

  这个问题在之前的关于二叉树的遍历问题文章里已经讨论过。对于二叉树的层次序遍历,我们需要使用一个队列,首先取树的根节点加入队列。然后每次从队列里取一个元素出来,将这个取出来的元素的非空子节点加入到队列中。这么一直循环遍历到队列为空。

  在这里,因为要求返回的类型是List<List<Integer>>,也就是说返回的是遍历过的每一层的元素的值,而不是单独的元素。在详细的实现里要稍微改变一下。我们可以用一个List<TreeNode>来保存当前这一层的元素,然后每次在遍历这个列表的时候将这一层的元素的值加入到一个List<Integer>里,在循环结束后加入到最终的结果中。在遍历这个列表的同时,构造一个新的List<TreeNode>,将当前列表里每个元素的非空子节点加入到这个列表中。然后重复判断这个列表是否为空循环。直到最后这个列表为空。

  详细的代码实现如下:

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> result = new ArrayList<>();
        if(root == null) return result;
        List<TreeNode> list = new ArrayList<>();
        list.add(root);
        while(!list.isEmpty()) {
            List<Integer> intList = new ArrayList<>();
            List<TreeNode> temp = new ArrayList<>();
            for(TreeNode  node : list) {
                intList.add(node.val);
                if(node.left != null) temp.add(node.left);
                if(node.right != null) temp.add(node.right);
            }
            result.add(intList);
            list = temp;
        }
        return result;
    }
}

 

2
0
分享到:
评论

相关推荐

    【LeetCode】102. Binary Tree Level Order Traversal

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的...102. Binary Tree Leve

    leetcode卡-LeetCode:我的LeetCode解决方案

    leetcode卡 LeetCode 记录一下再LeetCode上刷的题,坚持每天刷一道吧 2017.06.12 打卡[LeetCode 2. Add Two Numbers], Linked list 2017.06.13 打卡[LeetCode 200. Number of Islands], BFS 2017.06.14 打卡...

    leetcode中文版-LeetCodeAnimation:力码动画

    leetcode中文版 我会尽力将LeetCode上所有的题目都用动画的形式演示出来,计划用3到4年时间去完成它,期待与你见证这一天! 文章最新首发于微信公众号 五分钟学算法 ,您可以关注获取最新的文章。 Problems ID ...

    leetcode中文版-leetcode:leetcode

    leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 ...balance_binary_tree ...binary_tree_inorder_traversal ...binary_tree_level_order_traversal_I

    leetcode-tree

    102-Binary Tree Level Order Traversal199-Binary Tree Right Side View:层次遍历的一个运用树的构造给出前中后序的序列中的两个,构造一棵树。递归。前序 parent left-child right-child中序 left-child parent ...

    leetcode-[removed]使用Java的Leetcode解决方案

    102 Binary Tree Level Order Traversal.js(二叉树级订单Traversal.js) 103 Binary Tree Zigzag Level Order Traversal.js(二叉树之字形级别顺序Traversal.js) 104 Binary Tree.js的最大深度 105从Preorder和...

    lrucacheleetcode-luoleet:LeetcodesolutionsbyXinhangLuoandQinghaoDai

    https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal 103 https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Binary Tree Zigzag Level ...

    leetcode下载-LeetCodeAnimation:力码动画

    leetcode下载 我会尽力将LeetCode上所有的题目都用动画的形式演示出来,计划用3到4年时间去完成它,期待与你见证这一天! 文章最新首发于微信公众号 五分钟学算法 ,您可以关注获取最新的文章。 Problems ID Problem...

    leetcodetreenode-Leetcode:包含已解决的Leetcode问题的存储库

    leetcode 树节点力码 Leetcode 链接: 包含已解决的 Leetcode 问题的存储库。 问题根据难度编号和放置,然后根据用于解决问题的语言。 它们各自的编号放在标题之前。 问题的一般描述包含在文件本身的随附注释中。 ...

    javalruleetcode-what_the_dead_men_say:what_the_dead_men_say

    leetcode what_the_dead_men_say 所以这只是一个 repo,我从leetcode.com存储我的问题解决方案。 二叉树 0098 Validate Binary Search Tree - Java Recursive - Java Iterative - Java Inorder 0099 Recover ...

    2sumleetcode-LeetCode:力码

    2sum leetcode 轮廓 1_count_and_say.cpp - super_ugly_number.cpp - Detect_Pattern.cpp - degree_of_array.cpp ...level_order_traversal.cpp - exponentiation_by_squaring.cpp - Maximum_Depth_B

    leetcode71python-LeetCode:力码

    PYTHONhttps://github.com/meetpatel1311/LeetCode/blob/main/Python/103_Binary_Tree_Zigzag_Level_Order_Traversal.py 力扣问题 数字 标题 解决方案 1. 2. 3. 4. 5. 6. 7. 8. 9. 11. 12. 13. 14. 15. 16. 17. 19. ...

    cpp-算法精粹

    Binary Tree Zigzag Level Order Traversal Recover Binary Search Tree Same Tree Symmetric Tree Balanced Binary Tree Flatten Binary Tree to Linked List Populating Next Right Pointers in Each Node II ...

    lrucacheleetcode-LeetCode_Note:leetcode个人笔记

    [102_binary-tree-level-order-traversal.cpp] [103_binary-tree-zigzag-level-order-traversal.cpp] [104_maximum-depth-of-binary-tree.cpp] [105_construct-binary-tree-from-preorder-and-inorder-traversal.cpp...

    四平方和定理leetcode-leetcode-practice:个人LeetCode练习代码

    102.binary-tree-level-order-traversal (二叉树的层序遍历) 104.maximum-depth-of-binary-tree (二叉树的最大深度) 105.construct-binary-tree-from-preorder-and-inorder-traversal (从前序与中序遍历序列构造...

    leetcode中文版-cabbird:一组用python编写的算法

    leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 ...balance_binary_tree ...binary_tree_inorder_traversal ...binary_tree_level_order_traversal_I

Global site tag (gtag.js) - Google Analytics