📅  最后修改于: 2023-12-03 15:36:57.154000             🧑  作者: Mango
在二叉树中,根节点到叶子节点的路径被称为根到叶路径。本题需要删除二叉树中所有长度小于 K (K为整数)的根到叶路径上的节点。
二叉树的遍历是解决本题的关键。我们可以采用递归的方式进行遍历,对于每个节点,需要知道当前节点的深度。因此,我们可以将深度值作为参数传递到递归函数中。
对于当前节点,若左右子节点均为空,则判断当前深度是否小于K,小于则删除当前节点,否则保留当前节点。
若左右子节点不为空,则分别调用递归函数,深度值加1,同时更新左右子节点。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def removePath(root: TreeNode, k: int) -> TreeNode:
if not root:
return None
if not root.left and not root.right:
if k > 1:
return root
return None
root.left = removePath(root.left, k-1)
root.right = removePath(root.right, k-1)
if not root.left and not root.right:
return None
return root
本题采用递归的方式解决,时间复杂度为O(n),其中n为二叉树中节点的个数。空间复杂度为O(h),其中h为二叉树的高度。