Appearance
0366-寻找二叉树的叶子节点
https://leetcode.cn/problems/find-leaves-of-binary-tree
给你一棵二叉树,请按以下要求的顺序收集它的全部节点: 依次从左到右,每次收集并删除所有的叶子节点 重复如上过程直到整棵树为空
示例:
输入: [1,2,3,4,5]
1
/ \
2 3
/ \
4 5
输出: [[4,5,3],[2],[1]]
解释:
1. 删除叶子节点 [4,5,3] ,得到如下树结构:
1
/
2
2. 现在删去叶子节点 [2] ,得到如下树结构:
1
3. 现在删去叶子节点 [1] ,得到空树:
[]
思路:暴力法
使用 dfs 遍历,每次获取和删除叶子节点
参考代码
csharp
public class Solution {
private TreeNode dfs(TreeNode root, IList<int> list){
if(root == null){
return null;
}
if(root.left == null && root.right == null){
list.Add(root.val);
return null;
}
root.left = dfs(root.left, list);
root.right = dfs(root.right, list);
return root;
}
public IList<IList<int>> FindLeaves(TreeNode root) {
IList<IList<int>> myList = new List<IList<int>>();
while(root != null){
List<int> list = new List<int>();
root = dfs(root,list);
myList.Add(list);
}
return myList;
}
}
AlgoPress