二叉树链式存储结构
typedef struct BiTNode
{
char data;
BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
二叉树创建(递归)
void create_bitree(BiTree &T)
{
char value;
cin >> value;
if(value == '#')
T = NULL;
else {
T = (BiTree)malloc(sizeof(BiTNode));
if(!T)
exit(-1);
T->data = value;
create_bitree(T->lchild);
create_bitree(T->rchild);
}
}
二叉树前序遍历
void pre_order_traverse(const BiTree &T)
{
if(T == NULL)
return;
cout << T->data << " ";
pre_order_traverse(T->lchild);
pre_order_traverse(T->rchild);
}
二叉树后序遍历
void post_oreder_traverse(const BiTree &T)
{
if(T == NULL)
return ;
post_oreder_traverse(T->lchild);
post_oreder_traverse(T->rchild);
cout << T->data << " ";
}
二叉树中序遍历
void in_oreder_traverse(const BiTree &T)
{
if(T == NULL)
return ;
in_oreder_traverse(T->lchild);
cout << T->data << " ";
in_oreder_traverse(T->rchild);
}
测试
int main()
{
BiTree T;
create_bitree(T);
pre_order_traverse(T);
cout << endl;
in_oreder_traverse(T);
cout << endl;
post_oreder_traverse(T);
system("pause");
return 0;
}