小白这本书这几天做到了数据结构二叉树这一块,要频繁的使用二叉树这种特殊的数据结构,因此我特别的把二叉树的实现代码写出来,方便自己以后的实现。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
class BTree
{
public:
char data;
BTree *lchild,*rchild;
};
BTree* CreateTree(BTree*T)
{
char ch;
ch=getchar();
if(ch=='#') T=NULL;
else
{
T=(BTree *)malloc(sizeof(BTree));
T->data =ch;
T->lchild=CreateTree(T->lchild);
T->rchild=CreateTree(T->rchild);
}
return T;
}
void PreOrderTraverse( BTree *T )
{
if(T)
{
cout<<T->data ;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse( BTree *T )
{
if(T)
{
InOrderTraverse(T->lchild);
cout<<T->data ;
InOrderTraverse(T->rchild);
}
}
void PosOrderTraverse( BTree *T )
{
if(T)
{
PosOrderTraverse(T->lchild);
PosOrderTraverse(T->rchild);
cout<<T->data ;
}
}
int main()
{
cout<<"请输入先序二叉树,没有左右孩子的用#表示"<<'\n';
BTree *t=CreateTree(t);
cout<<"先序"<<'\n';
PreOrderTraverse( t );
cout<<'\n'<<"中序"<<'\n';
InOrderTraverse( t );
cout<<'\n'<<"后序"<<'\n';
PosOrderTraverse( t );
cout<<'\n';
return 0;
}