#include<iostream>
using namespace std;
typedef struct BiTNode{
char data;//结点的数据域
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void initBiTree(BiTree &T)
{
T = new BiTNode;
T->data = 'a';
T->lchild = NULL;
T->rchild = NULL;
}
//先序遍历的顺序建立二叉链表
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);
}
}
//计算二叉树的深度
int depth(BiTree T)
{
int m=0,n=0;
if(T==NULL) return 0;
else
{
m = depth(T->lchild);
n = depth(T->rchild);
if(m>n) return(m+1);
else return(n+1);
}
}
//中序遍历
void InOrderTraverse(BiTree &T)
{
if(T){
InOrderTraverse(T->lchild);
cout<<T->data<<" ";
InOrderTraverse(T->rchild);
}
}
//先序遍历
void PreOrderTraverse(BiTree &T)
{
if(T){
cout<<T->data<<" ";
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//后序遍历
void PostOrderTraverse(BiTree &T)
{
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout<<T->data<<" ";
}
}
int main()
{
BiTree T;
//先序遍历创建树 输入ABC##DE#G##F###
createBiTree(T);
cout<<"中序遍历的结果是:";
InOrderTraverse(T);
cout<<"\n";
cout<<"先序遍历的结果是:";
PreOrderTraverse(T);
cout<<"\n";
cout<<"后序遍历的结果是:";
PostOrderTraverse(T);
cout<<"\n";
cout<<"二叉树的深度是:"<<depth(T);
}
二叉树的创建以及先中后序遍历
最新推荐文章于 2023-03-07 09:42:55 发布