使用C语言 创建一颗用括号表示法表示的二叉树
时间: 2024-05-08 20:20:20 浏览: 223
好的,我可以为你提供C语言创建用括号表示法表示的二叉树的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
/* 二叉树结构体 */
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
/* 创建二叉树的函数 */
TreeNode* create_tree(char* str, int* index) {
char ch = str[(*index)++];
if (ch == '#') { // 如果遇到空节点
return NULL;
}
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->data = ch;
node->left = create_tree(str, index); // 递归创建左子树
node->right = create_tree(str, index); // 递归创建右子树
return node;
}
/* 主函数 */
int main() {
char str[] = "AB#D##C###"; // 二叉树的括号表示法
int index = 0;
TreeNode* root = create_tree(str, &index); // 创建二叉树
return 0;
}
```
在这个代码示例中,我们定义了一个结构体 `TreeNode` 表示二叉树节点,并且提供了一个 `create_tree()` 函数用于创建二叉树。这个函数的第一个参数是一个用括号表示法表示的二叉树,第二个参数是一个指向当前字符位置的指针。通过递归的方式,我们依次读取字符,如果当前字符是 `#` 表示这是一个空节点,返回 `NULL`;否则,我们创建一个新的节点,将读取到的字符赋值给它,并且递归创建左右子树。最终,我们返回根节点即可。
如果你有关于这个例子的任何问题或疑问,请随时问我。
阅读全文