假设二叉树的结点值是字符,根据输入的一棵二叉树的扩展先序遍历序列建立一棵以二叉链表表示的二叉树。用c语言写
时间: 2024-01-23 09:42:53 浏览: 55
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
/* 定义二叉树结点结构体 */
typedef struct Node {
char data;
struct Node *left;
struct Node *right;
} Node;
/* 递归创建二叉树 */
Node *createTree(char *str, int *index) {
char c = str[(*index)++];
if (c == '#') {
return NULL;
}
Node *node = (Node *)malloc(sizeof(Node));
node->data = c;
node->left = createTree(str, index);
node->right = createTree(str, index);
return node;
}
/* 先序遍历二叉树 */
void preOrder(Node *root) {
if (root == NULL) {
printf("# ");
return;
}
printf("%c ", root->data);
preOrder(root->left);
preOrder(root->right);
}
int main() {
char *str = "AB#CD###";
int index = 0;
Node *root = createTree(str, &index);
printf("先序遍历:");
preOrder(root);
printf("\n");
return 0;
}
```
以上代码中,`createTree` 函数用于递归创建二叉树,`preOrder` 函数用于先序遍历二叉树。在主函数中,我们先定义了一棵二叉树的扩展先序遍历序列 `AB#CD###`,然后通过调用 `createTree` 函数创建了这棵二叉树,并通过调用 `preOrder` 函数进行了先序遍历,输出结果为 `A B # # C D # # #`。
阅读全文