C++实现类模板BiTree代码,基本操作包括构造函数、递归前序遍历、递归中序遍历、递归后序遍历、层序遍历,并在主函数中验证
时间: 2023-03-13 19:40:52 浏览: 180
我可以为您提供一些参考:为实现类模板BiTree代码,首先需要实现构造函数,设置左右子树的指针,以及定义结点的数据类型。然后,实现递归前序遍历、中序遍历、后序遍历,以及层序遍历算法,在主函数中调用相应的函数,实现树的遍历。最后,在主函数中验证,确认算法的正确性。
相关问题
编写一个程序,用链式存储方式构造二叉树,实现二叉树的基本操作(假设树的元素类型为char),并在此基础上设计一个主程序完成如下功能: (1)编写CreatBiTree函数,创建二叉树T; (2)编写PreOrder函数,先序遍历二叉树 (3)编写InOrder函数,中序遍历二叉树; (4)编写PostOrder函数,后序遍历二叉树; (5)编写PostTreeDepth函数,求二叉树的深度
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
void CreatBiTree(BiTree &T){
char ch;
cin >> ch;
if(ch == '#')
T = NULL;
else{
T = new BiNode;
T -> data = ch;
CreatBiTree(T -> lchild);
CreatBiTree(T -> rchild);
}
}
void PreOrder(BiTree T){
if(T != NULL){
cout << T -> data << " ";
PreOrder(T -> lchild);
PreOrder(T -> rchild);
}
}
void InOrder(BiTree T){
if(T != NULL){
InOrder(T -> lchild);
cout << T -> data << " ";
InOrder(T -> rchild);
}
}
void PostOrder(BiTree T){
if(T != NULL){
PostOrder(T -> lchild);
PostOrder(T -> rchild);
cout << T -> data << " ";
}
}
int PostTreeDepth(BiTree T){
if(T == NULL)
return 0;
else{
int ldepth = PostTreeDepth(T -> lchild);
int rdepth = PostTreeDepth(T -> rchild);
return max(ldepth, rdepth) + 1;
}
}
int main(){
BiTree T;
cout << "请输入二叉树(#表示空节点):" << endl;
CreatBiTree(T);
cout << "先序遍历结果为:";
PreOrder(T);
cout << endl;
cout << "中序遍历结果为:";
InOrder(T);
cout << endl;
cout << "后序遍历结果为:";
PostOrder(T);
cout << endl;
cout << "二叉树的深度为:" << PostTreeDepth(T) << endl;
return 0;
}
```
主程序实现了创建二叉树、先序遍历、中序遍历、后序遍历和求二叉树深度等基本操作。其中,创建二叉树采用递归方式,先序、中序和后序遍历都采用递归方式实现,求二叉树深度采用递归方式。
阅读全文