二叉树的创建和打印、。。。
创建二叉树,要求是递归算法,输入形式为类似A(B(#,D),C(E,#)),#表示空子树。打印:按树状打印
下面是我的算法,貌似创建部分有误,不能输出正确结果,求助、、、
#include <stdio.h>
#include <stdlib.h>
typedef struct BitNode
{
char data;
int level;
struct BitNode *lchild,*rchild;
}BitNode,*BiTree;
int CreateBiTree_GList( BiTree &T)//由广义表形式的输入建立二叉链表
{ char c;
c=getchar();
if(c=='#') T=NULL; //空子树
else
{
T=(BitNode*)malloc(sizeof(BitNode));
T->data=c;
if(getchar()!='(') return 1;
if(!CreateBiTree_GList(T->lchild)) return 1;
if(getchar()!=',') return 1;
if(!CreateBiTree_GList(T->rchild)) return 1;
if(getchar()!=')') return 1; //这些语句是为了保证输入符合A(B,C)的格式
}
return 0;
}//CreateBiTree_GList
void Inorder(BiTree bt)
{
int i;
if(bt!=NULL)//按右根左遍历二叉树
{
Inorder(bt->rchild);
printf("\t_________________\n\t");
for(i=1;i<=4;i++)
printf("| %c ",(i==bt->level)?bt->data:' ');
printf("|\n");
Inorder(bt->lchild);
}
}
int main()
{
int t;
BiTree b;
//建立二叉树
b=(BiTree)malloc(sizeof(BitNode));
t=CreateBiTree_GList(b);
Inorder(b);//按右根左遍历二叉树
printf("\t_________________\n\t");
printf("\n");
return 0;
}