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

2021-09-24 14:50:05 字數 1216 閱讀 5152

給定乙個二叉搜尋樹的根節點root和乙個值key,刪除二叉搜尋樹中的key對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹(有可能被更新)的根節點的引用。

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

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

如果找到了,刪除它。

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

示例:

給定需要刪除的節點值是 3,所以我們首先找到 3 這個節點,然後刪除它。

乙個正確的答案是 [5,4,6,2,null,null,7], 如下圖所示。

另乙個正確答案是 [5,2,6,null,4,null,7]。

現在有乙個二叉搜尋樹,現在要讓你刪除乙個節點,並且保證整個bst的性質不變。

要保證整個性質,我們必須在刪除的位置上,找乙個合適的值來進行替換,使得bst上的每個節點都滿足 當前節點的值大於左節點但是小於右節點

而替換策略就是:

1、當前刪除位置,用左邊子樹的最大值的節點替換

2、或者是,用右邊子樹的最小值的節點替換

用上面的策略就可以保證刪除後性質不變,並且調整開銷也很少

1

class

treenode 6}

78public

class

solution

15return findreplacement(node,node.right,false

);16}17

18public treenode deletenode(treenode root, int

key) else

31return

root;32}

33 }

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

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

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

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

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

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