Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit b63cee3

Browse files
Merge pull request youngyangyang04#869 from SambacFeng/master
update 0450.删除二叉搜索树中的节点,增加js的迭代写法
2 parents b4f724b + fdca5f0 commit b63cee3

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

problems/0450.删除二叉搜索树中的节点.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,41 @@ var deleteNode = function (root, key) {
485485
};
486486
```
487487

488+
迭代
489+
``` javascript
490+
var deleteNode = function (root, key) {
491+
const deleteOneNode = target => {
492+
if (!target) return target
493+
if (!target.right) return target.left
494+
let cur = target.right
495+
while (cur.left) {
496+
cur = cur.left
497+
}
498+
cur.left = target.left
499+
return target.right
500+
}
501+
502+
if (!root) return root
503+
let cur = root
504+
let pre = null
505+
while (cur) {
506+
if (cur.val === key) break
507+
pre = cur
508+
cur.val > key ? cur = cur.left : cur = cur.right
509+
}
510+
if (!pre) {
511+
return deleteOneNode(cur)
512+
}
513+
if (pre.left && pre.left.val === key) {
514+
pre.left = deleteOneNode(cur)
515+
}
516+
if (pre.right && pre.right.val === key) {
517+
pre.right = deleteOneNode(cur)
518+
}
519+
return root
520+
}
521+
```
522+
488523

489524

490525
-----------------------

0 commit comments

Comments
 (0)