日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二叉搜索樹的根節點 root 和一個值 key,刪除二叉搜索樹中的?key?對應的節點,并保證二叉搜索樹的性質不變。返回二叉搜索樹(有可能被更新)的根節點的引用。一般來說,刪除節點可分為兩個步驟:首先找到需要刪除的節點; 如果找到了,刪除它。示例 1:輸入:root = [5,3,6,2,4,null,7], key = 3 輸出:[5,4,6,2,null,null,7] 解釋:給定需要刪除的節點值是 3,所以我們首先找到 3 這個節點,然后刪除它。 一個正確的答案是 [5,4,6,2,null,null,7], 如下圖所示。 另一個正確答案是 [5,2,6,null,4,null,7]。示例 2:輸入: root = [5,3,6,2,4,null,7], key = 0 輸出: [5,3,6,2,4,null,7] 解釋: 二叉樹不包含值為 0 的節點 示例 3:輸入: root = [], key = 0 輸出: []# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution:def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:if root is None:return None# 遞歸調用左子樹if key < root.val:root.left = self.deleteNode(root.left, key)return root# 遞歸調用右子樹if key > root.val:root.right = self.deleteNode(root.right, key)return root# 當前節點的val正好等于key# 當前節點的左子節點不存在,直接提升右子節點即可if root.left is None:new_root = root.rightroot.right = Nonereturn new_root# 當前節點右子節點不存在,直接提升左子節點即可if root.right is None:new_root = root.leftroot.left = Nonereturn new_root# 當前節點的左右子節點均存在,用左子樹的最大點替換# 尋找左子樹最大的點node = root.leftwhile node.right != None:node = node.right# 左子樹最大的點變更為根節點new_root = TreeNode(node.val)# 新的根節點需要左子樹需要更新new_root.left = self.removeMax(root.left)# 新的根節點的右子樹即為原來的右子樹new_root.right = root.rightroot.left = Noneroot.right = Nonereturn new_rootdef removeMax(self, node):if node.right == None:new_root = node.leftnode.left = Nonereturn new_rootnode.right = self.removeMax(node.right)return node

總結

以上是生活随笔為你收集整理的67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。