Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fdca5f0

Browse files
update 0450.删除二叉搜索树中的节点,增加js的迭代写法
1 parent 6e7f13c commit fdca5f0

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)

AltStyle によって変換されたページ (->オリジナル) /