1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/删除二叉搜索树中的节点 [delete-node-in-a-bst].html
2022-03-29 12:43:11 +08:00

55 lines
1.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给定一个二叉搜索树的根节点 <strong>root </strong>和一个值 <strong>key</strong>,删除二叉搜索树中的&nbsp;<strong>key&nbsp;</strong>对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。</p>
<p>一般来说,删除节点可分为两个步骤:</p>
<ol>
<li>首先找到需要删除的节点;</li>
<li>如果找到了,删除它。</li>
</ol>
<p>&nbsp;</p>
<p><strong>示例 1:</strong></p>
<p><img src="https://assets.leetcode.com/uploads/2020/09/04/del_node_1.jpg" style="width: 800px;" /></p>
<pre>
<strong>输入:</strong>root = [5,3,6,2,4,null,7], key = 3
<strong>输出:</strong>[5,4,6,2,null,null,7]
<strong>解释:</strong>给定需要删除的节点值是 3所以我们首先找到 3 这个节点,然后删除它。
一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。
另一个正确答案是 [5,2,6,null,4,null,7]。
<img src="https://assets.leetcode.com/uploads/2020/09/04/del_node_supp.jpg" style="width: 350px;" />
</pre>
<p><strong>示例 2:</strong></p>
<pre>
<strong>输入:</strong> root = [5,3,6,2,4,null,7], key = 0
<strong>输出:</strong> [5,3,6,2,4,null,7]
<strong>解释:</strong> 二叉树不包含值为 0 的节点
</pre>
<p><strong>示例 3:</strong></p>
<pre>
<strong>输入:</strong> root = [], key = 0
<strong>输出:</strong> []</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li>节点数的范围&nbsp;<code>[0, 10<sup>4</sup>]</code>.</li>
<li><code>-10<sup>5</sup>&nbsp;&lt;= Node.val &lt;= 10<sup>5</sup></code></li>
<li>节点值唯一</li>
<li><code>root</code>&nbsp;是合法的二叉搜索树</li>
<li><code>-10<sup>5</sup>&nbsp;&lt;= key &lt;= 10<sup>5</sup></code></li>
</ul>
<p>&nbsp;</p>
<p><strong>进阶:</strong> 要求算法时间复杂度为&nbsp;O(h)h 为树的高度。</p>