| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1026 人关注过本帖
标题:二叉树的创建和打印、。。。
取消只看楼主 加入收藏
营养书
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
快速回复:二叉树的创建和打印、。。。
数据加载中...
 
   



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

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