mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +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