450-Delete Node in a BST
Description
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated) of the BST.
Basically, the deletion can be divided into two stages:
- Search for a node to remove.
- If the node is found, delete the node.
Note: Time complexity should be O(height of tree).
Example:
root = [5,3,6,2,4,null,7]
key = 3
5
/ \
3 6
/ \ \
2 4 7
Given key to delete is 3. So we find the node with value 3 and delete it.
One valid answer is [5,4,6,2,null,null,7], shown in the following BST.
5
/ \
4 6
/ \
2 7
Another valid answer is [5,2,6,null,4,null,7].
5
/ \
2 6
\ \
4 7
問題描述
給定二叉排序樹的根節點和一個鍵, 刪除樹中對應鍵的節點。返回二叉排序樹的根節點(可能會更新)
一般, 刪除可以分為兩部分:
- 找出刪除的節點
- 刪除節點
問題分析
找出刪除節點, 若其左子樹或右子樹為空, 那麼直接返回刪除節點的右子樹或者左子樹, 否則將刪除節點的左子樹作為刪除節點的右子樹的最左節點的左子樹, 返回刪除節點的右子樹的根節點
解法
class Solution {
public TreeNode deleteNode(TreeNode root, int key) {
if(root == null) return null;
if(root.val > key){
root.left = deleteNode(root.left, key);
}else if(root.val < key){
root.right = deleteNode(root.right, key);
}else{
if(root.left == null) return root.right;
else if(root.right == null) return root.left;
else{
TreeNode leftMostNodeOfRight = toolFunc(root.right);
leftMostNodeOfRight.left = root.left;
return root.right;
}
}
return root;
}
public TreeNode toolFunc(TreeNode root){
while(root.left != null) root = root.left;
return root;
}
}
相關文章
- (BST)升序陣列變為BST樹陣列
- 樹-BST基本實現
- Leetcode-Recover BSTLeetCode
- LeetCode-Inorder Successor in BSTLeetCode
- 653-Two Sum IV - Input is a BST
- LeetCode-Largest BST SubtreeLeetCode
- Leetcode-Validate BSTLeetCode
- [LeetCode] 776. Split BSTLeetCode
- 從BST到LSM的進階之路
- Leetcode Kth Smallest Element in a BSTLeetCode
- 二叉堆、BST 與平衡樹
- leetcode 450. delete-node-in-a-bst 刪除二叉搜尋樹中的節點 python3LeetCodedeletePython
- 二叉排序樹BST及CRUD操作排序
- Leetcode-Convert Sorted Array to BSTLeetCode
- 把BST轉換為雙向連結串列
- Leetcode-Convert Sorted List to BST.LeetCode
- 學習筆記——二叉平衡樹(BST)筆記
- 資料結構☞二叉搜尋樹BST資料結構
- LeetCode之Convert BST to Greater Tree(Kotlin)LeetCodeKotlin
- 用PHP來實現二分搜尋樹(BST)PHP
- [LeetCode] 230. Kth Smallest Element in a BSTLeetCode
- 【Algorithm&DataStructure】二叉查詢樹(BST)的遍歷GoASTStruct
- 二叉樹(BST)中序遍歷的三種方法二叉樹
- 使用JS去實現一個BST(二叉查詢樹)JS
- 看動畫學演算法之:二叉搜尋樹BST動畫演算法
- 『資料結構與演算法』二叉查詢樹(BST)資料結構演算法
- (樹)根據排序陣列或者排序連結串列重新構建BST樹排序陣列
- 前端學習資料結構1 二分排序樹(BST)前端資料結構排序
- 將二叉排序樹BST轉換成排序的雙向連結串列排序
- node auto run / node 自動執行
- 【node】DNSDNS
- node配置
- node openaiOpenAI
- BST查詢結構與折半查詢方法的實現與實驗比較
- node.js01 認識node.jsNode.js
- node.js02 安裝Node環境Node.js
- [Node.js]npm安裝node-gypNode.jsNPM
- Node.js 指南(關於Node.js)Node.js