目录
定义结点数据类型
typedef struct bitnode
{
char data;
struct bitnode *Lchild,*Rchild;
} BiTNode,*BiTree;
建立一颗带头结点的二叉树
BiTree CreatTree()
{
BiTree p;
p=new(BiTNode);
p->Lchild=NULL;
p->Rchild=NULL;
return p;
}
遍历
访问函数
void visit(BiTree bt)
{
cout<<bt->data<<' ';
}
///DLR 前序
void PreOrder(BiTree bt)
{
if(bt!=NULL)
{
visit(bt);
PreOrder(bt->Lchild);
PreOrder(bt->Rchild);
}
return;
}
///LDR 中序
void InOrder(BiTree bt)
{
if(!bt)
return;
else
{
InOrder(bt->Lchild);
//cout<<bt->data;
visit(bt);
InOrder(bt->Rchild);
}
}
///LRD 后序
void PostOrder(BiTree bt)
{
if(bt!=NULL)
{
PostOrder(bt->Lchild);
PostOrder(bt->Rchild);
visit(bt);
}
return;
}
主代码
#include<bits/stdc++.h>
using namespace std;
typedef struct bitnode
{
char data;
struct bitnode *Lchild,*Rchild;
} BiTNode,*BiTree;
///建立一颗带头结点的二叉树
BiTree CreatTree()
{
BiTree p;
p=new(BiTNode);
p->Lchild=NULL;
p->Rchild=NULL;
return p;
}
///遍历
void visit(BiTree bt)
{
cout<<bt->data<<' ';
}
///DLR 前
void PreOrder(BiTree bt)
{
if(bt!=NULL)
{
visit(bt);
PreOrder(bt->Lchild);
PreOrder(bt->Rchild);
}
return;
}
///LDR 中
void InOrder(BiTree bt)
{
if(!bt)
return;
else
{
InOrder(bt->Lchild);
visit(bt);
InOrder(bt->Rchild);
}
}
///LRD 后
void PostOrder(BiTree bt)
{
if(bt!=NULL)
{
PostOrder(bt->Lchild);
PostOrder(bt->Rchild);
visit(bt);
}
return;
}
int main()
{
BiTree bt;
bt=CreatTree();///建树
/* 插入结点
.....
*/
//遍历
PreOrder(bt);
InOrder(bt);
PostOrder(bt);
return 0;
}