C语言假设二叉树的结点值是字符,根据输入的一棵二叉树的完整先序遍历序列建立一棵以二叉链表表示的二叉树。
时间: 2024-01-23 16:10:04 浏览: 100
C语言 求一个二叉树中位于先序序列中第k个位置的结点的值.doc
好的,根据您的问题,我来给您讲解一下如何实现。
先序遍历的顺序是:根节点、左子树、右子树。因此,我们可以利用递归的方式建立二叉树。
具体实现步骤如下:
1. 定义二叉树结构体
```
typedef struct BiTNode
{
char data; // 结点值
struct BiTNode *lchild; // 左孩子
struct BiTNode *rchild; // 右孩子
}BiTNode, *BiTree;
```
2. 编写建立二叉树的函数
```
// 创建二叉树
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c", &ch);
if (ch == '#')
{
*T = NULL;
}
else
{
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
```
3. 调用建立二叉树的函数
```
int main()
{
BiTree T = NULL;
printf("请输入先序遍历序列:\n");
CreateBiTree(&T);
return 0;
}
```
这样就可以根据输入的先序遍历序列建立一棵以二叉链表表示的二叉树了。
阅读全文