编写一个程序,用链式存储方式构造二叉树,实现二叉树的基本操作(假设树的元素类型为char),并在此基础上设计一个主程序完成如下功能: (1)编写CreatBiTree函数,创建二叉树T; (2)编写PreOrder函数,先序遍历二叉树 (3)编写InOrder函数,中序遍历二叉树; (4)编写PostOrder函数,后序遍历二叉树; (5)编写PostTreeDepth函数,求二叉树的深度
时间: 2024-01-23 14:06:22 浏览: 48
链式结构存储二叉树的基本操作
好的,以下是代码实现:
```c++
#include<iostream>
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree &T){
char ch;
cin >> ch;
if(ch == '#') T = NULL;
else{
T = new BiTNode;
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrder(BiTree T){
if(T){
cout << T->data << " ";
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T){
if(T){
InOrder(T->lchild);
cout << T->data << " ";
InOrder(T->rchild);
}
}
void PostOrder(BiTree T){
if(T){
PostOrder(T->lchild);
PostOrder(T->rchild);
cout << 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;
cout << "请输入二叉树(以#表示空节点):";
CreateBiTree(T);
cout << "先序遍历:";
PreOrder(T);
cout << endl;
cout << "中序遍历:";
InOrder(T);
cout << endl;
cout << "后序遍历:";
PostOrder(T);
cout << endl;
cout << "二叉树的深度为:" << PostTreeDepth(T) << endl;
return 0;
}
```
主函数中先调用CreateBiTree函数创建二叉树,然后分别调用PreOrder、InOrder、PostOrder函数进行先序、中序、后序遍历,最后调用PostTreeDepth函数求二叉树的深度。
阅读全文