📌  相关文章
📜  删除长度小于 K 的根到叶路径上的节点(1)

📅  最后修改于: 2023-12-03 15:36:57.154000             🧑  作者: Mango

删除长度小于 K 的根到叶路径上的节点

在二叉树中,根节点到叶子节点的路径被称为根到叶路径。本题需要删除二叉树中所有长度小于 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为二叉树的高度。