毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

c语言课程设计报告之二叉树演示源程序 第2页

更新时间:2007-10-22:  来源:毕业论文

 

if(ch=='.')/*输入空格代表NULL*/
      return NULL;
   else
   {
      if(h==6||nodeNUM==26)/*如果树的层次已经到5或者结点树到达26个就自动返回NULL*/
  return NULL;
      node=(Tree*)malloc(sizeof(Tree));
      node->data=ch;
      node->x=t;/*树的x坐标是传递过来的横坐标*/
      node->y=h*50;/*树的y坐标与层次大小有关*/
      nodeNUM++;
      node->lchild=InitTree(h+1,t-w,w/2);
      node->rchild=InitTree(h+1,t+w,w/2);
   }
   return node;
}
/*用图形显示创建好的树*/
void DrawTree(Tree *t)
{
   if(t!=NULL)
   {
      setcolor(BLACK);
      setfillstyle(SOLID_FILL,BLACK);
      fillellipse(t->x,t->y,9,9);
      setcolor(WHITE);
      circle(t->x,t->y,10); /*画圆*/
      sprintf(str,"%c",t->data);/*将内容转换成字符串输出*/
      outtextxy(t->x-3,t->y-2,str);
      if(t->lchild!=NULL)/*左子树*/
      {
  line(t->x-5,t->y+12,t->lchild->x+5,t->lchild->y-12);
  DrawTree(t->lchild);
      }
      if(t->rchild!=NULL)/*右子树*/
      {
  line(t->x+5,t->y+12,t->rchild->x-5,t->rchild->y-12);
  DrawTree(t->rchild);
      }
   }
}
/*遍历时显示每个结点的过程*/
void DrawNode(Tree *t,int color)
{
   setcolor(YELLOW);
   setfillstyle(SOLID_FILL,YELLOW);
   fillellipse(t->x,t->y,10,10);
   setcolor(RED);
   sprintf(str,"%c",t->data);/*将内容转换成字符串输出*/
   outtextxy(t->x-3,t->y-2,str);
   setcolor(color);
   outtextxy(s.x,s.y,str);
   setcolor(RED);
   sprintf(str,"%d",s.num);/*将遍历次序用数字显示在树的结点上*/
   outtextxy(t->x-3,t->y-20,str);
   s.num++;
   sleep(1);
}
/*前序遍历*/
void Preorder(Tree *t)
{
   if(t!=NULL)
   {
      s.x+=15;
      DrawNode(t,GREEN);
      Preorder(t->lchild);
      Preorder(t->rchild);
   }
}
/*中序遍历*/
void Midorder(Tree *t)
{
   if(t!=NULL)
   {
      Midorder(t->lchild);
      s.x+=15;
      DrawNode(t,YELLOW);
      Midorder(t->rchild);
   }
}
/*后序遍历*/
void Posorder(Tree *t)
{
   if(t!=NULL)
   {
      Posorder(t->lchild);
      Posorder(t->rchild);
      s.x+=15;
      DrawNode(t,BLUE);
   }
}
/*图形初始化*/
void Init()
{
   int gd=DETECT,gm;
   initgraph(&gd,&gm,"c:\\tc");
   cleardevice();
   setcolor(YELLOW);
   outtextxy(250,10,"anykey to continue");
   setcolor(RED);
   outtextxy(20,300,"preorder");
   outtextxy(20,350,"midorder");
   outtextxy(20,400,"posorder");
   getch();
}
/*图形关闭*/
void Close()
{
   getch();
   closegraph();
}

上一页  [1] [2] 

c语言课程设计报告之二叉树演示源程序 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。