450 刪除二叉搜尋樹中的節點

2022-01-23 02:08:28 字數 2190 閱讀 9630

給定乙個二叉搜尋樹的根節點

root

和乙個值

key

,刪除二叉搜尋樹中的

key

對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹(有可能被更新)的根節點的引用。

一般來說,刪除節點可分為兩個步驟:

首先找到需要刪除的節點;

如果找到了,刪除它。

說明:

要求演算法時間複雜度為 o(h),h 為樹的高度。

class

solution(object):

defdeletenode(self, root, key):

""":type root: treenode

:type key: int

:rtype: treenode

"""if

notroot:

return

root

# 從左子樹中找

ifroot.val

>

key:

root.left = self.deletenode(root.left, key)

# 從右子樹中找

elif

root.val

<

key:

root.right = self.deletenode(root.right, key)

else:

# 判斷是否左右子樹是否都存在

ifnot

root.left:

return

root.right

elif

notroot.right:

return

root.left

else:

# 找到左子樹的最右子結點

tmp = root.left

while

tmp.right:

tmp = tmp.right

root.val = tmp.val

# 刪除左子樹的最右子結點後,重構左子樹

root.left = self.deletenode(root.left, tmp.val)

return

root

defdeletenode(self, root, key):

""":type root: treenode

:type key: int

:rtype: treenode

"""if

notroot:

return

root

ifroot.val

>

key:

root.left = self.deletenode(root.left, key)

return

root

elif

root.val

<

key:

root.right = self.deletenode(root.right, key)

return

root​if

notroot.left:

return

root.right

elif

notroot.right:

return

root.left

tmp = self.findmin(root.right)

tmp.right = self.delmin(root.right)

tmp.left = root.left

return

tmpdef

findmin(self, root):

"""找到右子樹中的最左子結點

"""if

notroot.left:

return

root

return

self.findmin(root.left)

defdelmin(self, root):

"""刪除右子樹中的最左子結點

"""if

notroot.left:

return

root.right

root.left = self.delmin(root.left)

return

root

450 刪除二叉搜尋樹中的節點

給定乙個二叉搜尋樹的根節點 root 和乙個值 key,刪除二叉搜尋樹中的 key 對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹 有可能被更新 的根節點的引用。一般來說,刪除節點可分為兩個步驟 首先找到需要刪除的節點 如果找到了,刪除它。說明 要求演算法時間複雜度為 o h h 為樹的高度...

450 刪除二叉搜尋樹中的節點

刪除二叉搜尋樹中的節點 給定乙個二叉搜尋樹的根節點 root 和乙個值 key,刪除二叉搜尋樹中的 key 對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹 有可能被更新 的根節點的引用。一般來說,刪除節點可分為兩個步驟 首先找到需要刪除的節點 如果找到了,刪除它。說明 要求演算法時間複雜度為...

450 刪除二叉搜尋樹中的節點 遞迴

給定乙個二叉搜尋樹的根節點 root 和乙個值 key,刪除二叉搜尋樹中的 key 對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹 有可能被更新 的根節點的引用。一般來說,刪除節點可分為兩個步驟 首先找到需要刪除的節點 如果找到了,刪除它。示例 輸入 root 5,3,6,2,4,null,...