根据ABCDEFGH用C语言实现实现二叉树的输出树,并给出详细的注释。
时间: 2023-06-24 22:03:04 浏览: 90
下面是使用C语言实现二叉树的输出树的示例代码,代码中包含了详细的注释以便理解:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建二叉树结点函数
struct TreeNode* createNode(int val) {
struct TreeNode* node = (struct TreeNode*) malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 输出树函数,使用递归方式进行遍历
void printTree(struct TreeNode* root, int level) {
if (root == NULL) {
return;
}
// 输出右子树
printTree(root->right, level + 1);
// 输出当前结点
for (int i = 0; i < level; i++) {
printf(" ");
}
printf("%d\n", root->val);
// 输出左子树
printTree(root->left, level + 1);
}
int main() {
// 创建二叉树结点
struct TreeNode* a = createNode('A');
struct TreeNode* b = createNode('B');
struct TreeNode* c = createNode('C');
struct TreeNode* d = createNode('D');
struct TreeNode* e = createNode('E');
struct TreeNode* f = createNode('F');
struct TreeNode* g = createNode('G');
struct TreeNode* h = createNode('H');
// 构建二叉树
a->left = b;
a->right = c;
b->left = d;
b->right = e;
c->left = f;
c->right = g;
e->right = h;
// 输出树
printTree(a, 0);
return 0;
}
```
以上代码中,我们首先定义了二叉树结点的结构体 `TreeNode`,包含了结点的值以及左右子树指针。接着我们定义了创建二叉树结点的函数 `createNode`,用于创建一个新的结点并返回其指针。
在输出树的函数 `printTree` 中,我们使用递归的方式进行遍历,先输出右子树,再输出当前结点,最后输出左子树。每次输出时,我们都会在前面输出一定数量的空格,以便形成树形结构。
最后在 `main` 函数中,我们创建了 ABCDEFGH 8个结点,并按照题目中给出的结构构建了一棵二叉树。最后通过调用输出树函数 `printTree` 输出了整棵树。
阅读全文