二叉树叶子顺序遍历 · binary tree leaves order traversal
[抄题]:
给定一个二叉树,像这样收集树节点:收集并移除所有叶子,重复,直到树为空。
给出一个二叉树:
1
/ \
2 3
/ \
4 5
返回 [[4, 5, 3], [2], [1]].
[暴力解法]:
时间分析:
空间分析:
[思维问题]:
- 觉得要用BFS。不知道用dfs怎么求高度:max(左,右)+1,这是高度的定义吧
- 只知道怎么摘,不知道要去尝试用数学表示出来:第k层扒下来的叶子节点,高度也是k
- 不知道怎么把一层的节点都存在一个hashmap中,觉得一个key不是只能存一个value么:hashmap的value可以存链表,不只可以存次数。
[一句话思路]:
相同高度的叶子节点在相同高度摘下来
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:

[一刷]:
- 以前的DFS函数没有输出,这里DFS可以有输出,不知道为什么:因为不可能主函dfs一次输出一次,干脆在dfs中全部输出。
- java8对哈希表的俩新方法是:putifabsent,getordefault
- 先写总表达式bfs(某节点),再写具体操作。实际执行是调用-调用-调用-调用……直到从最底端节点开始,所以是完全不应该有循环的。
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
- 先写总表达式bfs(某节点),再写具体操作。实际执行是调用-调用-调用-调用……直到从最底端节点开始,所以是完全不应该有循环的。
[复杂度]:Time complexity: O(n) Space complexity: O(n)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
- 不知道怎么把一层的节点都存在一个hashmap中,觉得一个key不是只能存一个value么:hashmap的value可以存链表,不只可以存次数。
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
Find Leaves of Binary Tree
[代码风格] :
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/ public class Solution {
/*
* @param root: the root of binary tree
* @return: collect and remove all leaves
*/
HashMap<Integer, List<Integer>> map = new HashMap<>(); public List<List<Integer>> findLeaves(TreeNode root) {
//corner case
List<List<Integer>> ans = new LinkedList<>();
int max_height = bfs(root); for (int d = 1; d <= max_height; d++) {
ans.add(map.get(d));
} return ans;
} //bfs
//corner case
int bfs(TreeNode curt) {
if (curt == null) {
return 0;
}
int d = Math.max(bfs(curt.left), bfs(curt.right)) + 1;
map.putIfAbsent(d, new LinkedList<Integer>());
map.get(d).add(curt.val); return d;
}
}
二叉树叶子顺序遍历 · binary tree leaves order traversal的更多相关文章
- LeetCode 102. 二叉树的层次遍历(Binary Tree Level Order Traversal) 8
102. 二叉树的层次遍历 102. Binary Tree Level Order Traversal 题目描述 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 每 ...
- [Swift]LeetCode102. 二叉树的层次遍历 | Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 二叉树的层次遍历 · Binary Tree Level Order Traversal
[抄题]: 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) [思维问题]: [一句话思路]: 用queue存每一层 [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况 ...
- (二叉树 BFS) leetcode 107. Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- 二叉树垂直遍历 · Binary Tree Vertical Order Traversal
[抄题]: 给定二叉树,返回其节点值的垂直遍历顺序. (即逐列从上到下).如果两个节点在同一行和同一列中,则顺序应 从左到右. 给定一个二叉树 {3,9,20,#,#,15,7} 3 /\ / \ 9 ...
- [Swift]LeetCode314. 二叉树的竖直遍历 $ Binary Tree Vertical Order Traversal
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
翻译 给定一个二叉树,返回从下往上遍历经过的每一个节点的值. 从左往右,从叶子到节点. 比如: 给定的二叉树是 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 返回它从下 ...
- [LeetCode] Binary Tree Vertical Order Traversal 二叉树的竖直遍历
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
- LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
Binary Tree Level Order Traversal 题目描述: Given a binary tree, return the level order traversal of its ...
随机推荐
- 用 PHPMailer 发送邮件
REFs http://gohom.win/2015/07/02/PHPmailer/ http://blog.wpjam.com/m/phpmailer/ https://www.kancloud. ...
- Hadoop_10_shuffle01_Hadoop中的Shuffle详解【来源网络】
原文网址:http://blog.itpub.net/30316686/viewspace-2057204/ 详细的了解Shuffle过程,能更好的对hadoop集群进行优化. Map ...
- 【idea】Error:java: Compilation failed: internal java compiler error 解决办法
报错信息: 报错原因: 项目中Java版本不一致,可以查看项目中的jdk配置 1.查看项目的jdk(Ctrl+Alt+shift+S) File ->Project Structure-> ...
- CMS初步认识
一CMS本质 [1]基本思想是:分离内容的管理和设计,页面显示的风格和框架存储在模板里.至于页面显示的内容存储在数据库中或一个独立的文件中.当一个用户请求页面时,各部分联合生成一个标准的 HTML 页 ...
- USB学习笔记-总结
1. # ls /sys/bus/usb/devices/解析:1-0:1.0 1-1 1-1:1.0 2-0:1.0 2-1 2-1:1.0 2-2 2-2.1 2-2:1.0 2-2.1:1.0 ...
- C#对Jason序列化匿名对象
引用: using System.Web.Script.Serialization; 代码: var resp = new { flag = false, url = ConfigReader.Log ...
- CentOS7修复python拯救yum - 转载
原文:http://blog.51cto.com/welcomeweb/2132654 本人正在吹着空调,喝着茶水,然后qq头像抖了两下,业务开发同学给我打了个招呼,“忙么?帮个忙可以不?” 这很明显 ...
- open_input_file函数调用结构图(转)
open_input_file函数调用结构图(有些重复的函数调用就略掉了,大致是按流程往下的). 函数大致说明: AVFormatContext *avformat_alloc_context(voi ...
- panabit允许一台代理服务器只能收QQ企业邮箱,和内网ip通讯,限制除了QQ企业邮箱以外的所有内容规则
环境: 可访公网网的内网网段:192.168.0.0/24(员工网段) 192.168.2.0/24(服务器网段)两个内网网段. 不能访问公网的内网网段:192.168.4.0/24 4网段利用fo ...
- js的拼接
var datatr = " <tr>"; datatr += "<td bgcolor='#EEEEEE'><input class='i ...