结构体定义树节点
typedef struct BiTNode
{
string data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
创建一颗树
void CreateBiTree(BiTree *T)
{
string ch;
cin >> ch;
if(ch == "#")
*T = NULL;
else
{
*T = new BiTNode;
if(!*T)
cout << "error" << endl;
(*T)->data = ch;
CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } }
前序遍历:
void PreOrderTraverse(BiTree T)
{
if(T == NULL)
return;
cout << T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
中序遍历:
void InOrderTraverse(BiTree T)
{
if(T == NULL)
return;
InOrderTraverse(T->lchild);
cout << T->data;
InOrderTraverse(T->rchild);
}
后序遍历:
void PostOrderTraverse(BiTree T)
{
if(T == NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout << T->data;
}
主程序
#include <iostream>
using namespace std;
int main()
{
BiTree t;
CreateBiTree(&t);
PreOrderTraverse(t);
InOrderTraverse(t);
}