标题:二叉树的创建和打印、。。。
取消只看楼主
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
结帖率:100%
 问题点数:0 回复次数:1 
二叉树的创建和打印、。。。
创建二叉树,要求是递归算法,输入形式为类似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;
}
   
搜索更多相关主题的帖子: 二叉树 
2011-04-17 20:19
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
得分:0 
多谢指教。我再仔细研究一下。
2011-04-18 18:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337022-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.429624 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved