Find Leaves of Binary Tree
Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.
Example:
Given binary tree
      1
     / \
    2   3
   / \
  4   5    Returns [4, 5, 3], [2], [1].
Explanation:
- Removing the leaves [4, 5, 3] would result in this tree: - 1
 /- 2 
- Now removing the leaf [2] would result in this tree: - 1
- Now removing the leaf [1] would result in the empty tree: - []- Returns [4, 5, 3], [2], [1]. 
 class TreeNode {
     int val;
     TreeNode left;
     TreeNode right;
     TreeNode(int x) {
         val = x;
     }
 };
 class Solution {
     public List<List<Integer>> findLeaves(TreeNode root) {
         List<List<Integer>> listAll = new ArrayList<List<Integer>>();
         while (root != null) {
             List<Integer> list = new ArrayList<Integer>();
             root = helper(list, root);
             listAll.add(new ArrayList<Integer>(list));
         }
         return listAll;
     }
     private TreeNode helper(List<Integer> list, TreeNode root) {
         if (root == null)
             return null;
         if (root.left == null && root.right == null) {
             list.add(root.val);
             return null;
         }
         root.left = helper(list, root.left);
         root.right = helper(list, root.right);
         return root;
     }
 }
下面这种方法是不会移除leaves的。
/**
* 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>> findLeaves(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
height(root, res);
return res;
}
private int height(TreeNode node, List<List<Integer>> res){
if(null==node) return ;
int level = + Math.max(height(node.left, res), height(node.right, res));
if(res.size() == level - ) res.add(new ArrayList<>());
res.get(level - ).add(node.val);
return level;
}
}
Find Leaves of Binary Tree的更多相关文章
- [LeetCode] Find Leaves of Binary Tree 找二叉树的叶节点
		Given a binary tree, find all leaves and then remove those leaves. Then repeat the previous steps un ... 
- Leetcode: Find Leaves of Binary Tree
		Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ... 
- 366. Find Leaves of Binary Tree
		Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ... 
- 366. Find Leaves of Binary Tree C#
		Example:Given binary tree 1 / \ 2 3 / \ 4 5 Returns [4, 5, 3], [2], [1]. Explanation: 1. Removing th ... 
- 366. Find Leaves of Binary Tree输出层数相同的叶子节点
		[抄题]: Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all ... 
- [leetcode]366. Find Leaves of Binary Tree捡树叶
		Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ... 
- LeetCode 366. Find Leaves of Binary Tree
		原题链接在这里:https://leetcode.com/problems/find-leaves-of-binary-tree/#/description 题目: Given a binary tr ... 
- [LeetCode] 366. Find Leaves of Binary Tree 找二叉树的叶节点
		Given a binary tree, find all leaves and then remove those leaves. Then repeat the previous steps un ... 
- 【leetcode】366.Find Leaves of Binary Tree
		原题 Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all lea ... 
随机推荐
- Owin中间件搭建OAuth2.0认证授权服务体会
			继两篇转载的Owin搭建OAuth 2.0的文章,使用Owin中间件搭建OAuth2.0认证授权服务器和理解OAuth 2.0之后,我想把最近整理的资料做一下总结. 前两篇主要是介绍概念和一个基本的D ... 
- 未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”
			未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” 使用nu ... 
- 【POJ 2250】Compromise(最长公共子序列LCS)
			题目字符串的LCS,输出解我比较不会,dp的时候记录从哪里转移来的,之后要一步一步转移回去把解存起来然后输出. #include<cstdio> #include<cstring&g ... 
- DataSet筛选数据然后添加到新的DataSet中引发的一系列血案
			直入代码: var ds2 = new DataSet(); ) { ].Select(" usertype <> 'UU'"); ) { DataTable tmp ... 
- POJ1330 Nearest Common Ancestors
			Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24587 Acce ... 
- iOS Xcode 调试技巧 全局断点这样加才有意思
			http://blog.sina.com.cn/s/blog_876a2c9901016ezh.html 
- 使用 PHP 和 Apache Solr 实现企业搜索
			原文链接:http://www.ibm.com/developerworks/cn/opensource/os-php-apachesolr/ http://blog.csdn.net/hzcyc ... 
- C# ManualResetEvent 的方法介绍
			名称 说明 1. Close 在派生类中被重写时,释放由当前 WaitHandle 持有的所有资源. (继承自 WaitHandle.)在XNA Framework中,此成员由 Close() ... 
- 优化sql语句
			关于数据库sql语句的优化? 这个链接可以看 涉及数据库的操作基本都是变得很慢了, 所以通常说数据库是程序的瓶颈 测试/优化数据库/sql的方法: 把order排序.where条件等一个一个去除法来做 ... 
- 移动端Web开发注意点
			不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ... 
