Several bug fixes and improvements. (#887)

* fix the bugs of C code.

* Add a header figure.

* Improve the definition of tree node height.
pull/888/head
Yudong Jin 1 year ago committed by GitHub
parent 436b6fa9a6
commit d26e811e10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -20,12 +20,12 @@ int recur(int n) {
/* 使用迭代模拟递归 */ /* 使用迭代模拟递归 */
int forLoopRecur(int n) { int forLoopRecur(int n) {
int stack[1000]; // 借助一个大数组来模拟栈 int stack[1000]; // 借助一个大数组来模拟栈
int top = 0; int top = -1; // 栈顶索引
int res = 0; int res = 0;
// 递:递归调用 // 递:递归调用
for (int i = n; i > 0; i--) { for (int i = n; i > 0; i--) {
// 通过“入栈操作”模拟“递” // 通过“入栈操作”模拟“递”
stack[top++] = i; stack[1 + top++] = i;
} }
// 归:返回结果 // 归:返回结果
while (top >= 0) { while (top >= 0) {
@ -64,6 +64,9 @@ int main() {
res = recur(n); res = recur(n);
printf("\n递归函数的求和结果 res = %d\n", res); printf("\n递归函数的求和结果 res = %d\n", res);
res = forLoopRecur(n);
printf("\n使用迭代模拟递归求和结果 res = %d\n", res);
res = tailRecur(n, 0); res = tailRecur(n, 0);
printf("\n尾递归函数的求和结果 res = %d\n", res); printf("\n尾递归函数的求和结果 res = %d\n", res);

@ -226,7 +226,7 @@ void removeVertex(GraphAdjList *graph, unsigned int index) {
graph->vertices[i] = graph->vertices[i + 1]; // 顶点前移 graph->vertices[i] = graph->vertices[i + 1]; // 顶点前移
graph->vertices[i]->pos--; // 所有前移的顶点索引值减 1 graph->vertices[i]->pos--; // 所有前移的顶点索引值减 1
} }
graph->vertices[graph->size - 1] = 0; // 将被删除顶点的位置置 0 graph->vertices[graph->size - 1] = 0;
graph->size--; graph->size--;
// 释放内存 // 释放内存
freeVertex(vet); freeVertex(vet);

@ -207,7 +207,7 @@ AVL 树既是二叉搜索树也是平衡二叉树,同时满足这两类二叉
``` ```
“节点高度”是指从该节点到最远叶节点的距离,即所经过的“边”的数量。需要特别注意的是,叶节点的高度为 0 ,而空节点的高度为 -1 。我们将创建两个工具函数,分别用于获取和更新节点的高度。 “节点高度”是指从该节点到最远叶节点的距离,即所经过的“边”的数量。需要特别注意的是,叶节点的高度为 0 ,而空节点的高度为 -1 。我们将创建两个工具函数,分别用于获取和更新节点的高度。
```src ```src
[file]{avl_tree}-[class]{a_v_l_tree}-[func]{update_height} [file]{avl_tree}-[class]{a_v_l_tree}-[func]{update_height}

@ -200,7 +200,7 @@
- 节点的「度 degree」节点的子节点的数量。在二叉树中度的取值范围是 0、1、2 。 - 节点的「度 degree」节点的子节点的数量。在二叉树中度的取值范围是 0、1、2 。
- 二叉树的「高度 height」从根节点到最远叶节点所经过的边的数量。 - 二叉树的「高度 height」从根节点到最远叶节点所经过的边的数量。
- 节点的「深度 depth」从根节点到该节点所经过的边的数量。 - 节点的「深度 depth」从根节点到该节点所经过的边的数量。
- 节点的「高度 height」从最远叶节点到该节点所经过的边的数量。 - 节点的「高度 height」距离该节点最远叶节点到该节点所经过的边的数量。
![二叉树的常用术语](binary_tree.assets/binary_tree_terminology.png) ![二叉树的常用术语](binary_tree.assets/binary_tree_terminology.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Loading…
Cancel
Save