CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

快来帮忙!看看我的2叉树的程序哪里错了!(只有这么多分了,请大家原谅)

楼主Laney(6吨大笨猫)2003-06-01 00:29:22 在 C/C++ / C语言 提问

题目:按递增顺序生成集合M的最小的100个数,并输出之.M的定义:1.   1∈M,2.X∈M,则2*x+1∈M,3*x+1∈M,如集合1,3,4,7,9....(要求用2叉树解决)  
  我用一个2叉树,把2*x+1放到左只,3*x+1放到右只,然后遍历,最后排序,找出前100个就韦结果  
  #include   <stdio.h>  
  #include   <stdlib.h>  
   
  struct   BTNode  
  {  
  long   lData;  
  struct   BTNode   *leftPtr;  
  struct   BTNode   *rightPtr;  
  };  
   
  long   data[127];  
  int   iTemp;  
   
  void   insertNode(struct   BTNode   **treePtr,long   value)  
  {  
  if   ((*treePtr)==NULL)  
  {  
  (*treePtr)=(struct   BTNode   *)malloc(sizeof(struct   BTNode));  
  if   (treePtr!=NULL)  
  {  
  (*treePtr)->lData=value;  
  (*treePtr)->leftPtr=NULL;  
  (*treePtr)->rightPtr=NULL;  
  }  
  }  
   
  else  
  {  
  insertNode(&((*treePtr)->leftPtr),2*value+1);  
  insertNode(&((*treePtr)->rightPtr),3*value+1);  
  }  
  }  
   
  void   inOrder(struct   BTNode   *treePtr)  
  {  
  if   (treePtr!=NULL)  
  {  
  iTemp=iTemp+1;  
  inOrder(treePtr->leftPtr);  
  data[iTemp]=treePtr->lData;  
  inOrder(treePtr->rightPtr);  
  }  
  }  
  void   sort(long   *list,int   index)   /*index   :the   number   that   to   sort   in   array*/  
  {  
  int   i,j;  
  int   change;  
  int   temp;  
  while(!change)  
  {  
  change=1;  
  for(j=index;j>0;j++)  
  {  
  for   (i=0;i<j-i;i++)  
  {  
  temp=list[i+1];  
  list[i+1]=list[i];  
  list[i]=temp;  
  change=0;  
  }  
  }  
  }  
  }  
   
   
  void   main()  
  {  
  struct   BTNode   *rootPtr=NULL;  
  int   i;  
  /*long   lTemp0,lTemp1;*/  
  long   lBegin=1;  
  iTemp=0;  
   
  for(i=1;i<=7;i++)  
  {  
  insertNode(&rootPtr,1);  
  }  
  inOrder(rootPtr);  
  sort(data,128);  
  for   (i=0;i<100;i++)  
  printf("%ld     ",data[i]);  
   
  }  
  问题点数:66、回复次数:4Top

1 楼Laney(6吨大笨猫)回复于 2003-06-01 00:29:40 得分 0

请大家帮忙Top

2 楼Laney(6吨大笨猫)回复于 2003-06-01 02:26:51 得分 0

已经搞定了Top

3 楼Laney(6吨大笨猫)回复于 2003-06-01 03:36:34 得分 0

原来是冒泡排序出了问题!改为用qsort()  
  正确的代码如下  
  #include   <stdio.h>  
  #include   <stdlib.h>  
   
  struct   BTNode  
  {  
  long   lData;  
  struct   BTNode   *leftPtr;  
  struct   BTNode   *rightPtr;  
  };  
   
  long   data[127];  
  int   iTemp;  
  int   compare(   const   void   *arg1,   const   void   *arg2   );  
   
  void   insertNode(struct   BTNode   **treePtr,long   value)  
  {  
  if   ((*treePtr)==NULL)  
  {  
  (*treePtr)=(struct   BTNode   *)malloc(sizeof(struct   BTNode));  
  if   (treePtr!=NULL)  
  {  
  (*treePtr)->lData=value;  
  (*treePtr)->leftPtr=NULL;  
  (*treePtr)->rightPtr=NULL;  
  }  
  }  
   
  else  
  {  
  insertNode(&((*treePtr)->leftPtr),2*value+1);  
  insertNode(&((*treePtr)->rightPtr),3*value+1);  
  }  
  }  
   
  void   inOrder(struct   BTNode   *treePtr)  
  {  
  if   (treePtr!=NULL)  
  {  
  inOrder(treePtr->leftPtr);  
  /*printf("%d     ",treePtr->lData);*/  
  data[iTemp]=treePtr->lData;  
  iTemp=iTemp+1;  
  inOrder(treePtr->rightPtr);  
  }  
  }  
   
  void   main()  
  {  
  struct   BTNode   *rootPtr=NULL;  
  int   i;  
  int   i1;  
  /*long   lTemp0,lTemp1;*/  
  long   lBegin=1;  
  iTemp=0;  
   
  for(i=1;i<=7;i++)  
  {  
  insertNode(&rootPtr,1);  
  }  
  inOrder(rootPtr);  
   
   
  qsort((void   *)data,100,sizeof(long),compare);  
  for   (i=0;i<100;i++)  
  printf("%ld     ",data[i]);  
   
  }  
   
  int   compare(   const   void   *arg1,   const   void   *arg2   )  
  {  
  long   *a1=(long   *)arg1;  
  long   *a2=(long   *)arg2;  
  return   ((*a1)-(*a2));  
  }  
  Top

4 楼zoe_rainy(学会长大)回复于 2003-06-03 21:45:40 得分 66

天书:(  
  分就不要了Top

相关问题

  • 二叉树程序哪儿错了??
  • 高分求TC2.0下二叉树层次遍历和线索二叉树的程序~~~
  • 高分买DirectX SDK 八叉树分割场景的原程序!!!
  • 哭求表达式求值程序(二叉树)
  • 如果有两个程序,请原谅我的无知[求助]
  • 谁能给我一个关于二叉树的完整的程序。
  • 能否贴个二叉树结构和遍历的源程序?50相送
  • 高分买DirectX SDK 四叉树分割场景的原程序!!!200分
  • 求由手工输入数据构造二叉树的程序(急急急.....)
  • 帮我看一下这个“二叉树遍历”程序错在那里?

关键词

  • null
  • treeptr
  • leftptr
  • rightptr
  • ldata
  • itemp
  • insertnode
  • inorder
  • struct btnode
  • 叉树

得分解答快速导航

  • 帖主:Laney
  • zoe_rainy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo