、类型定义二叉链表存储结构;p127B、基本操作1)创建一棵二叉树voidCreatBiTree(BiTree*T);p1311、提取用户输入值x; 2、判断用户输入值是否为#,3、若为#则建立空子树;4、若不为#,创建新的结点空间存储根结点,其data值为c,左子树,右子树递归调用CreatBiTree函数。2)二叉树的遍历判;p1291、二叉树的先序遍历:1)先访问并输出根节点,在采用相同方法递归遍历其左子树及右子树。2、二叉树的中序遍历;1)先递归遍历其左子树,后访问并输出根节点,最后采用相同方法递归遍历其右子树。3、二叉树的后序遍历:1)先递归遍历其左子树及右子树,后访问并输出根节点。
时间: 2023-12-10 18:39:38 浏览: 55
1. 二叉链表存储结构的类型定义:
```c
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
```
2. 创建一棵二叉树的函数:
```c
void CreatBiTree(BiTree *T) {
char c;
scanf("%c", &c);
if (c == '#') {
*T = NULL;
} else {
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = c;
CreatBiTree(&(*T)->lchild);
CreatBiTree(&(*T)->rchild);
}
}
```
3. 提取用户输入值 x 的代码:
```c
char x;
scanf("%c", &x);
```
4. 判断用户输入值是否为 #:
```c
if (x == '#') {
// 建立空子树
} else {
// 创建新的结点存储根结点,递归调用 CreatBiTree 函数
}
```
5. 二叉树的先序遍历:
```c
void PreOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
printf("%c ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
```
6. 二叉树的中序遍历:
```c
void InOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
InOrderTraverse(T->lchild);
printf("%c ", T->data);
InOrderTraverse(T->rchild);
}
```
7. 二叉树的后序遍历:
```c
void PostOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ", T->data);
}
```
阅读全文