创建二叉树,要求是递归算法,输入形式为类似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; 
}