首页 > 代码库 > 366. Find Leaves of Binary Tree
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, repeat until the tree is empty.
Example:
Given binary tree
1 / 2 3 / \ 4 5
Returns [4, 5, 3], [2], [1]
.
Explanation:
1. Removing the leaves [4, 5, 3]
would result in this tree:
1 / 2
2. Now removing the leaf [2]
would result in this tree:
1
3. Now removing the leaf [1]
would result in the empty tree:
[]
Returns [4, 5, 3], [2], [1]
.
public IList<IList<int>> FindLeaves(TreeNode root) { var res = new List<IList<int>>(); if(root == null) return res; DFS(root,res); return res; } public int DFS(TreeNode root,IList<IList<int>> res ) { if(root == null) return -1; int a = 1+Math.Max(DFS(root.left,res), DFS(root.right,res)); if(a >= res.Count()) res.Add(new List<int>()); res[a].Add(root.val); return a; }
public IList<IList<int>> FindLeaves(TreeNode root) { var res = new List<IList<int>>(); if(root == null) return res; while(root != null) { var cur = new List<int>(); root = DFS(root,cur); res.Add(cur); } return res; } public TreeNode DFS(TreeNode root,IList<int> res ) { if(root == null) return null; if(root.left == null && root.right == null) { res.Add(root.val); return null; } root.left = DFS(root.left, res); root.right = DFS(root.right,res); return root; }
366. Find Leaves of Binary Tree
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。