From fdca5f00ffd6108b544ff6d647fd88fb7490dd54 Mon Sep 17 00:00:00 2001 From: SambacFeng <56753082+SambacFeng@users.noreply.github.com> Date: Sat, 23 Oct 2021 16:32:28 +0800 Subject: [PATCH] =?UTF-8?q?update=200450.=E5=88=A0=E9=99=A4=E4=BA=8C?= =?UTF-8?q?=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E4=B8=AD=E7=9A=84=E8=8A=82?= =?UTF-8?q?=E7=82=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0js=E7=9A=84=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0450.删除二叉搜索树中的节点.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/problems/0450.删除二叉搜索树中的节点.md b/problems/0450.删除二叉搜索树中的节点.md index 32dd862e..23e710ad 100644 --- a/problems/0450.删除二叉搜索树中的节点.md +++ b/problems/0450.删除二叉搜索树中的节点.md @@ -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 +} +``` + -----------------------