update 0450.删除二叉搜索树中的节点,增加js的迭代写法

This commit is contained in:
SambacFeng
2021-10-23 16:32:28 +08:00
parent 6e7f13cb80
commit fdca5f00ff

View File

@ -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
}
```
-----------------------