📅  最后修改于: 2023-12-03 15:22:01.847000             🧑  作者: Mango
给定一个二叉树,找到其中 K 个最小的叶节点,并按照从小到大的顺序返回它们的值。
输入: root = [3, 5, 1, 6, 2, 9, 8, null, null, 7, 4], K = 3
3
/ \
5 1
/ \ / \
6 2 9 8
/ \
7 4
输出: [2, 4, 7]
class Solution:
def findKSmallLeaves(self, root: TreeNode, k: int) -> List[int]:
leaves = []
# DFS遍历整个二叉树,将所有叶子节点加入leaves列表
def helper(node):
if node is None:
return
if node.left is None and node.right is None:
leaves.append(node.val)
helper(node.left)
helper(node.right)
helper(root)
# 对叶节点列表进行排序并取前k个
return sorted(leaves)[:k]