用递归的方法实现以下算法: 1.以二叉链表表示二叉树,建立一棵二叉树(算法 5.3); 2.输出二叉树的中序遍历结果(算法 5.1); 3.输出二叉树的前序遍历结果(见讲稿); 4.输出二叉树的后序遍历结果(见讲稿)
时间: 2024-01-22 17:17:55 浏览: 142
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
5星 · 资源好评率100%
1. 建立二叉树的递归算法:
```
typedef struct BiTNode {
char data; // 数据域
struct BiTNode *lchild; // 左子树指针
struct BiTNode *rchild; // 右子树指针
} BiTNode, *BiTree;
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));
}
}
```
2. 中序遍历递归算法:
```
void InOrderTraverse(BiTree T) {
if (T) {
InOrderTraverse(T->lchild);
printf("%c ", T->data);
InOrderTraverse(T->rchild);
}
}
```
3. 前序遍历递归算法:
```
void PreOrderTraverse(BiTree T) {
if (T) {
printf("%c ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
```
4. 后序遍历递归算法:
```
void PostOrderTraverse(BiTree T) {
if (T) {
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ", T->data);
}
}
```
阅读全文