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

2021-09-23 17:19:00 字數 1377 閱讀 8284

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

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

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

如果找到了,刪除它。

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

示例:

root = [5,3,6,2,4,null,7]

key = 3

5/ \

3 6

/ \ \

2 4 7

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

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

5/ \

4 6

/ \

2 7

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

5/ \

2 6

\ \

4 7

思路:第一次刷leetcode,感覺吼吼玩呀

刪除操作(刪除的是z結點)

(1)若z是葉子結點,直接刪掉

(2)若z只有一棵左子樹,或一棵右子樹,刪除後,把子樹提上來

(3)若z有左、右子樹

則找到z節點的右子樹的最左的節點,把它替換刪除結點。(若z結點右子樹無左結點,則用其右子樹根節點代替)

**如下:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

if(keyval)

else if(key>root->val)

else

else if(root->right==null)

else}}

treenode* min(treenode* node)

return min(node->left);

}treenode* deletemin(treenode* node)

node->left=deletemin(node->left);

return node;}};

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

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

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

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

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

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