用c语言编写一个程序,用链式存储方式构造二叉树,实现二叉树的基本操作(假设树的元素类型为char),并在此基础上设计一个主程序完成如下功能: (1)编写CreatBiTree函数,创建二叉树T;(2)编写PreOrder函数,先序遍历二叉树 (3)编写InOrder函数,中序遍历二叉树;(4)编写PostOrder函数,后序遍历二叉树;(5)编写PostTreeDepth函数,求二叉树的深度,完成后,输入数据,输出结果
时间: 2024-02-13 16:03:54 浏览: 95
C语言编写的二叉树基本操作
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *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);
}
}
void PreOrder(BiTree T){
if(T){
printf("%c ", T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T){
if(T){
InOrder(T->lchild);
printf("%c ", T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T){
if(T){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c ", T->data);
}
}
int PostTreeDepth(BiTree T){
if(!T) return 0;
else{
int ldep = PostTreeDepth(T->lchild);
int rdep = PostTreeDepth(T->rchild);
return (ldep > rdep) ? (ldep + 1) : (rdep + 1);
}
}
int main(){
BiTree T;
printf("请输入二叉树(以#表示空节点):");
CreateBiTree(&T);
printf("先序遍历:");
PreOrder(T);
printf("\n");
printf("中序遍历:");
InOrder(T);
printf("\n");
printf("后序遍历:");
PostOrder(T);
printf("\n");
printf("二叉树的深度为:%d\n", PostTreeDepth(T));
return 0;
}
```
运行程序后,输入二叉树的结点数据,以#表示空节点,程序将会输出先序、中序、后序遍历的结果以及二叉树的深度。
阅读全文