用递归做 代码看起来简洁点
以下是用运行时间的增加换取了代码的整洁
如果key的右节点存在那么key的值和右节点的最最最最…左节点的值交换 继续递归直到再一次找到key值
也就是说会操作两次 但还是能满足了O(h)的运行时间
class Solution:
def deleteNode(self, root, key):
"""
:type root: TreeNode
:type key: int
:rtype: TreeNode
"""
if not root: return None
if root.val==key:
if not root.right:
left=root.left
return left
else:
right=root.right
while right.left:
right=right.left
root.val,right.val=right.val, root.val
root.left=self.deleteNode(root.left,key)
root.right=self.deleteNode(root.right,key)
return root

本文介绍了一种使用递归方式在二叉搜索树中删除特定节点的方法,通过将目标节点与其右子树的最左侧节点进行值交换,然后递归删除原目标节点,实现了O(h)的时间复杂度。
1009

被折叠的 条评论
为什么被折叠?



