C语言扩展先序遍历序列建立一棵以二叉链表表示的二叉树
时间: 2023-12-24 16:03:50 浏览: 116
按先序扩展序列建立二叉树
4星 · 用户满意度95%
以下是C语言扩展先序遍历序列建立一棵以二叉链表表示的二叉树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树的函数
TreeNode* createTree(char *preorder, int *index) {
char data = preorder[*index];
*index = *index + 1;
if (data == '#') {
return NULL;
}
TreeNode *node = (TreeNode*) malloc(sizeof(TreeNode));
node->data = data;
node->left = createTree(preorder, index);
node->right = createTree(preorder, index);
return node;
}
// 先序遍历函数
void preorderTraversal(TreeNode *tree) {
if (tree == NULL) {
return;
}
printf("%c ", tree->data);
preorderTraversal(tree->left);
preorderTraversal(tree->right);
}
int main() {
// 输入先序遍历序列
char preorder[100];
printf("请输入先序遍历序列:");
scanf("%s", preorder);
// 创建二叉树
int index = 0;
TreeNode *tree = createTree(preorder, &index);
// 输出先序遍历序列
printf("先序遍历序列为:");
preorderTraversal(tree);
printf("\n");
return 0;
}
```
输入先序遍历序列,例如输入:AB#C##,则输出先序遍历序列为:AB#C##,表示创建了以下二叉树:
```
A
/ \
B #
/ \
# C
/ \
# #
```
阅读全文