This commit is contained in:
krahets
2023-08-21 19:32:37 +08:00
parent 02ac0aa9fe
commit fb9ace3a95
62 changed files with 291 additions and 254 deletions

View File

@@ -167,7 +167,7 @@ comments: true
每个节点都有两个引用(指针),分别指向「左子节点 left-child node」和「右子节点 right-child node」该节点被称为这两个子节点的「父节点 parent node」。当给定一个二叉树的节点时我们将该节点的左子节点及其以下节点形成的树称为该节点的「左子树 left subtree」同理可得「右子树 right subtree」。
**在二叉树中,除叶节点外,其他所有节点都包含子节点和非空子树**。在以下示例中,若将“节点 2”视为父节点则其左子节点和右子节点分别是“节点 4”和“节点 5”左子树是“节点 4 及其以下节点形成的树”,右子树是“节点 5 及其以下节点形成的树”。
**在二叉树中,除叶节点外,其他所有节点都包含子节点和非空子树**。如下图所示,如果将“节点 2”视为父节点则其左子节点和右子节点分别是“节点 4”和“节点 5”左子树是“节点 4 及其以下节点形成的树”,右子树是“节点 5 及其以下节点形成的树”。
![父节点、子节点、子树](binary_tree.assets/binary_tree_definition.png)
@@ -175,7 +175,7 @@ comments: true
## 7.1.1   二叉树常见术语
二叉树涉及的术语较多,建议尽量理解并记住
二叉树的常用术语如下图所示
- 「根节点 root node」位于二叉树顶层的节点没有父节点。
- 「叶节点 leaf node」没有子节点的节点其两个指针均指向 $\text{None}$ 。
@@ -196,7 +196,9 @@ comments: true
## 7.1.2   二叉树基本操作
**初始化二叉树**。与链表类似,首先初始化节点,然后构建引用指向(即指针)。
### 1.   初始化二叉树
与链表类似,首先初始化节点,然后构建引用(指针)。
=== "Java"
@@ -378,7 +380,9 @@ comments: true
```
**插入与删除节点**。与链表类似,通过修改指针来实现插入与删除节点
## 7.1.3   插入与删除节点
与链表类似,在二叉树中插入与删除节点可以通过修改指针来实现。下图给出了一个示例。
![在二叉树中插入与删除节点](binary_tree.assets/binary_tree_add_remove.png)
@@ -518,7 +522,7 @@ comments: true
需要注意的是,插入节点可能会改变二叉树的原有逻辑结构,而删除节点通常意味着删除该节点及其所有子树。因此,在二叉树中,插入与删除操作通常是由一套操作配合完成的,以实现有实际意义的操作。
## 7.1.3   常见二叉树类型
## 7.1.4   常见二叉树类型
### 1.   完美二叉树
@@ -534,7 +538,7 @@ comments: true
### 2.   完全二叉树
「完全二叉树 complete binary tree」只有最底层的节点未被填满且最底层节点尽量靠左填充。
如下图所示,「完全二叉树 complete binary tree」只有最底层的节点未被填满且最底层节点尽量靠左填充。
![完全二叉树](binary_tree.assets/complete_binary_tree.png)
@@ -542,7 +546,7 @@ comments: true
### 3.   完满二叉树
「完满二叉树 full binary tree」除了叶节点之外其余所有节点都有两个子节点。
如下图所示,「完满二叉树 full binary tree」除了叶节点之外其余所有节点都有两个子节点。
![完满二叉树](binary_tree.assets/full_binary_tree.png)
@@ -550,13 +554,13 @@ comments: true
### 4.   平衡二叉树
「平衡二叉树 balanced binary tree」中任意节点的左子树和右子树的高度之差的绝对值不超过 1 。
如下图所示,「平衡二叉树 balanced binary tree」中任意节点的左子树和右子树的高度之差的绝对值不超过 1 。
![平衡二叉树](binary_tree.assets/balanced_binary_tree.png)
<p align="center"> 图:平衡二叉树 </p>
## 7.1.4 &nbsp; 二叉树的退化
## 7.1.5 &nbsp; 二叉树的退化
当二叉树的每层节点都被填满时,达到“完美二叉树”;而当所有节点都偏向一侧时,二叉树退化为“链表”。