題目描述:

题目链接: 102-Binary Tree Level Order Traversal

这个问题要解决的是如何逐层遍历一个二叉树,并把同一层元素放入同一list中, 再将所有元素返回。

其实当时我的第一个反应就是树类型的题目已经做了好多了,无非用来用去就是递归,或者队列,那如何解决这个问题呢?

先观察:

我们的顺序肯定只能从root开始往下走, 同时我们考虑最基本的形态, 只有一个root, 和两个子节点,[3] 得到 [9, 20]; 然后再由[9, 20] 得到[15, 7];这只是表面上的, 应为null的节点结果里不需要, 实际上的每层数据是如此:

    

其实也就是说, 所有当前层的节点, 其实都是由上一层每个节点的左右子树而来, 直到第一层root为止。可能我的表述有不清楚, 接下来我们一步一步拆解就是:

(1)首先我们得到了root, 就是3这个节点, 放入当前节点列表list, 因为只有root一个, 这一层我们结束了, 所以就把放入结果集ret中,同时得到下层要用的list(3);

(2)之后第二层怎么得到呢? 自然是之前得到的节点列表list, 从中得到了root, 取root的左右子树, 9, 20, 重新放入list(注意这个list要清空, 或者新建一个), 同时宝塔放入结果集ret中,同时得到下层要用的list(9, 20);

(3)如法炮制:得到list(15, 17) , (注意, 对于9的左右子树,没有的情况就不需要加入list中, 题目要求的结果不需要显示null值。), 放入结果集, 同时得到list(null)

(4)因为当list(null)时, 也就意味着上一个list 已经到了最后一层, 所以结束。

具体代码:

对了,这以上都是本人的一种思路和想法, 肯定还有别的更好的解决方案, 希望有同学可以在下面评论一起交流探讨:)

哦, 差点忘记提了, 还有一道关联题, https://leetcode.com/problems/binary-tree-level-order-traversal-ii/,要求改成了逆序输出, 即从

最后一层往前倒第一层地逐层遍历, 我想只要将结果集reverse下就好了吧, 或者一开始就递归求解?

leecode 每日解题思路 102-Binary Tree Level Order Traversal的更多相关文章

  1. [LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历

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

  2. 102. Binary Tree Level Order Traversal 广度优先遍历

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

  3. 【LeetCode】102. Binary Tree Level Order Traversal (2 solutions)

    Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes ...

  4. [刷题] 102 Binary Tree Level Order Traversal

    要求 对二叉树进行层序遍历 实现 返回结果为双重向量,对应树的每层元素 队列的每个元素是一个pair对,存树节点和其所在的层信息 1 Definition for a binary tree node ...

  5. 【LeetCode】102. Binary Tree Level Order Traversal 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目描述 Given a bi ...

  6. Java [Leetcode 102]Binary Tree Level Order Traversal

    题目描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...

  7. 【一天一道LeetCode】#102. Binary Tree Level Order Traversal

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...

  8. Java for LeetCode 102 Binary Tree Level Order Traversal

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

  9. [LeetCode]题解(python):102 Binary Tree Level Order Traversal

    题目来源 https://leetcode.com/problems/binary-tree-level-order-traversal/ Given a binary tree, return th ...

  10. 102. Binary Tree Level Order Traversal (Tree, Queue; BFS)

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

随机推荐

  1. Android开发UI之android:gravity / android:layout_Gravity,android:padding / android:layout_margin属性区分

    android:gravity / android:layout_Gravity区别: android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的te ...

  2. [hadoop源代码解读] 【SequenceFile】

    SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.一般对小文件可以使用这种文件合并,即将文件名作为key, ...

  3. [FOJ 1752] A^B mod C

    Problem 1752 A^B mod C Accept: 750    Submit: 3205Time Limit: 1000 mSec    Memory Limit : 32768 KB   ...

  4. ☀【offset() / position()】

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  5. 【转】objective-c基本数据类型之输出格式符

    原文网址:http://blog.csdn.net/mamong/article/details/8255691 基本数据类型 1. int 输出格式符:%i, %d, %o %x, 2. float ...

  6. CSS和JS标签style属性对照表

    盒子标签和属性对照 CSS语法(不区分大小写) JavaScript语法(区分大小写) border border border-bottom borderBottom border-bottom-c ...

  7. SQL中取当前记录的ID----->SCOPE_IDENTITY()

    SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值.I ...

  8. 知识面 z

    http://blog.csdn.net/sxhelijian/article/details/23163683 有了较宽和知识面,面对复试中不知道的问题,回答可以是:“这个问题,直接回答我没有把握, ...

  9. 如何使一个网络下的2台路由器都可以dhcp上网

    设备:2台路由器,网线若干 首先,设置好一个路由器,让它可以拨号上网.网关设置为192.168.1.1,子网掩码为255.255.255.0,dns为61.177.7.1 然后,设置第二台路由器.设置 ...

  10. STL总结之bitset

    STL的bitset是一个对位进行存储和操作的容器,可以轻松对bit位进行访问.   bitset的模板声明如下: template<size_t _Bits> class bitset; ...