leecode 每日解题思路 102-Binary Tree Level Order Traversal
題目描述:

题目链接: 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的更多相关文章
- [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, ...
- 102. Binary Tree Level Order Traversal 广度优先遍历
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 【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 ...
- [刷题] 102 Binary Tree Level Order Traversal
要求 对二叉树进行层序遍历 实现 返回结果为双重向量,对应树的每层元素 队列的每个元素是一个pair对,存树节点和其所在的层信息 1 Definition for a binary tree node ...
- 【LeetCode】102. Binary Tree Level Order Traversal 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目描述 Given a bi ...
- 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 ...
- 【一天一道LeetCode】#102. Binary Tree Level Order Traversal
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 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, ...
- [LeetCode]题解(python):102 Binary Tree Level Order Traversal
题目来源 https://leetcode.com/problems/binary-tree-level-order-traversal/ Given a binary tree, return th ...
- 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, ...
随机推荐
- Android开发UI之android:gravity / android:layout_Gravity,android:padding / android:layout_margin属性区分
android:gravity / android:layout_Gravity区别: android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的te ...
- [hadoop源代码解读] 【SequenceFile】
SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.一般对小文件可以使用这种文件合并,即将文件名作为key, ...
- [FOJ 1752] A^B mod C
Problem 1752 A^B mod C Accept: 750 Submit: 3205Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- ☀【offset() / position()】
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 【转】objective-c基本数据类型之输出格式符
原文网址:http://blog.csdn.net/mamong/article/details/8255691 基本数据类型 1. int 输出格式符:%i, %d, %o %x, 2. float ...
- CSS和JS标签style属性对照表
盒子标签和属性对照 CSS语法(不区分大小写) JavaScript语法(区分大小写) border border border-bottom borderBottom border-bottom-c ...
- SQL中取当前记录的ID----->SCOPE_IDENTITY()
SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值.I ...
- 知识面 z
http://blog.csdn.net/sxhelijian/article/details/23163683 有了较宽和知识面,面对复试中不知道的问题,回答可以是:“这个问题,直接回答我没有把握, ...
- 如何使一个网络下的2台路由器都可以dhcp上网
设备:2台路由器,网线若干 首先,设置好一个路由器,让它可以拨号上网.网关设置为192.168.1.1,子网掩码为255.255.255.0,dns为61.177.7.1 然后,设置第二台路由器.设置 ...
- STL总结之bitset
STL的bitset是一个对位进行存储和操作的容器,可以轻松对bit位进行访问. bitset的模板声明如下: template<size_t _Bits> class bitset; ...