| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1731 人关注过本帖
标题:二叉树创建问题~急
只看楼主 加入收藏
细雨清风
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-12-11
结帖率:100%
收藏
 问题点数:0 回复次数:14 
二叉树创建问题~急
#include<stdio.h>
#include<stdlib.h>

typedef struct BiTree
{
  char data;
  struct BiTree *lchild,*rchild;
}*BT;

BT create(BT T)
{
  char ch;
  printf("input:");
  scanf("%c",&ch);
  if(ch=='#')
   {
     T=NULL;
   }
  else
   {
     T=(BT *)malloc(sizeof(BT));
     T->data=ch;
     T->lchild=create(T->lchild);
     T->rchild=create(T->rchild);
   }
   return T;
}
void PerOrder(BT T)
{

   if(T!=NULL)
   {
     Visite(T->data);
     PerOrder(T->lchild);
     PerOrder(T->rchild);
   }
}
 Visite(char a)
{
  printf("%c\t",a);
}

void main()
{
  BT T;
  T=create(T);
  PerOrder(T);
}
大家帮我看下   帮帮忙
我输入数据创建二叉树的时候,我输到所有子叶都为空了,为什么还不能结束输入~......
我输入的顺序:a
b
#
#
c
#
#

[[it] 本帖最后由 细雨清风 于 2008-11-17 11:14 编辑 [/it]]
搜索更多相关主题的帖子: 二叉树 
2008-11-17 10:36
正在链接站点
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2008-8-31
收藏
得分:0 
把你的先序序列写出来看看啊
2008-11-17 10:40
细雨清风
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-12-11
收藏
得分:0 
我是这样输的:
a
b
#
#
c
#
#
2008-11-17 10:43
furu
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-5-16
收藏
得分:0 
俺也不是很明白

别人笑我太疯癫,我笑别人看不穿。不见五陵豪杰墓,无花无酒锄做田。
2008-11-17 15:14
细雨清风
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-12-11
收藏
得分:0 
那有谁帮帮忙给个简单的二叉树创建的程序参详下~谢谢~
2008-11-17 17:08
正在链接站点
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2008-8-31
收藏
得分:0 
建树得有树根结点头指针吧??
2008-11-17 18:23
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
得分:0 
scanf("%c",&ch);
后面跟个getchar();试试
你那样输入的话,回车也放进去了吧
2008-11-18 22:49
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
得分:0 
BinTree CreatBinTree(void) {
       BinTree T;
       char ch;
       ch=getchar();
       if(ch=='#')
       return(NULL);
       else{
       T=(BinTNode*)malloc(sizeof(BinTNode));
       T->data=ch;
       T->lchild=CreatBinTree();
       T->rchild=CreatBinTree();
       return(T);
       }
  }
2008-11-18 23:01
细雨清风
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-12-11
收藏
得分:0 
回复 8# 的帖子
好像这样也不得·~
2008-11-19 16:57
J_j
Rank: 1
等 级:新手上路
威 望:1
帖 子:100
专家分:0
注 册:2008-8-21
收藏
得分:0 
#include <stdio.h>
#include <malloc.h>

typedef struct node{
int data;
struct node *lchild,*rchild;
}*treetp,tree;
treetp create (treetp t,int c);
void print1(treetp);
int number=0;
void main()
{
  treetp t=0,r;
  r=create (t,0);
  printf("前序排列 :");
  print1  (r);
}

treetp  create(treetp t,int c)
{
treetp p,di;
do{
scanf("%d",&c);
if (t==0)
 {
 t=(treetp)malloc(sizeof(tree));
 t->lchild=t->rchild=0;
 t->data=c;
 }
else
 {   p=t;
  while(p!=0)
  {
  di=p;
  if(c<(p->data))
  p=p->lchild;
  else
  p=p->rchild;
  }
if(c<(di->data))
{
treetp NEWdi=(treetp) malloc(sizeof(tree));
NEWdi->lchild=NEWdi->rchild=0;
NEWdi->data=c;
di->lchild=NEWdi;
}
else
{
treetp NEWdi=(treetp) malloc(sizeof(tree));
NEWdi->lchild=NEWdi->rchild=0;
NEWdi->data=c;
di->rchild=NEWdi;
}
 }
++number;
}while(c!=0);
printf("叶子的数量:%d",number);
return t;
}   
void print1(treetp  t)  /*先序输出*/
{
   if (t!=0)
  {     
   printf("%d ",t->data);
   print1(t->lchild);
   print1(t->rchild);
   }
}
 楼主试试这个
2008-11-19 19:13
快速回复:二叉树创建问题~急
数据加载中...
 
   



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

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