Python | Leetcode Python题解之第450题删除二叉搜索树中的节点
题目:
题解:
class Solution:
def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:
cur, curParent = root, None
while cur and cur.val != key:
curParent = cur
cur = cur.left if cur.val > key else cur.right
if cur is None:
return root
if cur.left is None and cur.right is None:
cur = None
elif cur.right is None:
cur = cur.left
elif cur.left is None:
cur = cur.right
else:
successor, successorParent = cur.right, cur
while successor.left:
successorParent = successor
successor = successor.left
if successorParent.val == cur.val:
successorParent.right = successor.right
else:
successorParent.left = successor.right
successor.right = cur.right
successor.left = cur.left
cur = successor
if curParent is None:
return cur
if curParent.left and curParent.left.val == key:
curParent.left = cur
else:
curParent.right = cur
return root
原文地址:https://blog.csdn.net/Mopes__/article/details/142677424
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!