mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 16:19:46 +08:00
Fine-tune the docs.
This commit is contained in:
@@ -182,19 +182,18 @@
|
||||
|
||||
与插入节点类似,我们需要在删除操作后维持二叉搜索树的“左子树 < 根节点 < 右子树”的性质。首先,我们需要在二叉树中执行查找操作,获取待删除节点。接下来,根据待删除节点的子节点数量,删除操作需分为三种情况:
|
||||
|
||||
当待删除节点的子节点数量 $= 0$ 时,表示待删除节点是叶节点,可以直接删除。
|
||||
当待删除节点的度为 $0$ 时,表示待删除节点是叶节点,可以直接删除。
|
||||
|
||||

|
||||
|
||||
当待删除节点的子节点数量 $= 1$ 时,将待删除节点替换为其子节点即可。
|
||||
当待删除节点的度为 $1$ 时,将待删除节点替换为其子节点即可。
|
||||
|
||||

|
||||
|
||||
当待删除节点的子节点数量 $= 2$ 时,删除操作分为三步:
|
||||
当待删除节点的度为 $2$ 时,我们无法直接删除它,而需要使用一个节点替换该节点。由于要保持二叉搜索树“左 $<$ 根 $<$ 右”的性质,因此这个节点可以是右子树的最小节点或左子树的最大节点。假设我们选择右子树的最小节点(或者称为中序遍历的下个节点),则删除操作为:
|
||||
|
||||
1. 找到待删除节点在“中序遍历序列”中的下一个节点,记为 `tmp` ;
|
||||
2. 在树中递归删除节点 `tmp` ;
|
||||
3. 用 `tmp` 的值覆盖待删除节点的值;
|
||||
2. 将 `tmp` 的值覆盖待删除节点的值,并在树中递归删除节点 `tmp` ;
|
||||
|
||||
=== "<1>"
|
||||

|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
是的,因为高度和深度通常定义为“走过边的数量”。
|
||||
|
||||
!!! question "二叉树中的插入与删除一般都是由一套操作配合完成的,这里的“一套操作”指什么呢?可以理解为资源的子节点的资源释放吗?"
|
||||
|
||||
|
||||
拿二叉搜索树来举例,删除节点操作要分为三种情况处理,其中每种情况都需要进行多个步骤的节点操作。
|
||||
|
||||
!!! question "为什么 DFS 遍历二叉树有前、中、后三种顺序,分别有什么用呢?"
|
||||
|
||||
Reference in New Issue
Block a user