mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
update 0450.删除二叉搜索树中的节点,增加js的迭代写法
This commit is contained in:
@ -485,6 +485,41 @@ var deleteNode = function (root, key) {
|
||||
};
|
||||
```
|
||||
|
||||
迭代
|
||||
``` javascript
|
||||
var deleteNode = function (root, key) {
|
||||
const deleteOneNode = target => {
|
||||
if (!target) return target
|
||||
if (!target.right) return target.left
|
||||
let cur = target.right
|
||||
while (cur.left) {
|
||||
cur = cur.left
|
||||
}
|
||||
cur.left = target.left
|
||||
return target.right
|
||||
}
|
||||
|
||||
if (!root) return root
|
||||
let cur = root
|
||||
let pre = null
|
||||
while (cur) {
|
||||
if (cur.val === key) break
|
||||
pre = cur
|
||||
cur.val > key ? cur = cur.left : cur = cur.right
|
||||
}
|
||||
if (!pre) {
|
||||
return deleteOneNode(cur)
|
||||
}
|
||||
if (pre.left && pre.left.val === key) {
|
||||
pre.left = deleteOneNode(cur)
|
||||
}
|
||||
if (pre.right && pre.right.val === key) {
|
||||
pre.right = deleteOneNode(cur)
|
||||
}
|
||||
return root
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
|
Reference in New Issue
Block a user