题目描述:
给你一棵完全二叉树,请按以下要求的顺序收集它的全部节点:
依次从左到右,每次收集并删除所有的叶子节点
重复如上过程直到整棵树为空
示例:
输入: [1,2,3,4,5]
输出: [[4,5,3],[2],[1]]
解释:
删除叶子节点 [4,5,3] ,得到如下树结构:
现在删去叶子节点 [2] ,得到如下树结构:1
现在删去叶子节点 [1] ,得到空树:[]
题解代码
class Solution:
def findLeaves(self, root: TreeNode) -> List[List[int]]:
res=[]
#递归遍历二叉树 同时标记叶子节点的等级
def mfind(r):
if not r:
return 0
else:
lev_l=mfind(r.left)
lev_r=mfind(r.right)
level=max(lev_l,lev_r)
if len(res)==level:
res.append([])
res[level].append(r.val)
return level+1
mfind(root)
return res