C语言课程设计 二叉树演示源程序.doc
文本预览下载声明
/*二叉树演示源程序#include graphics.h#include stdio.h#include stdlib.h#include dos.h#include time.htypedef struct TREE{?? char data;/*树的结点数据*/?? struct TREE *lchild;?? struct TREE *rchild;?? int x;/*树的x坐标*/?? int y;/*树的y坐标*/}Tree;struct OUTPUT{?? int x;/*三种遍历的x坐标*/?? int y;/*三种遍历的y坐标*/?? int num;}s;int nodeNUM=0;/*统计当前的结点数字,最多26个*/char way;/*自动建立树和手动建立树的标志,2手动,1自动*/char str[3];/*显示结点数据的字符串*/void Init();/*图形初始化*/void Close();/*图形关闭*/Tree *CreatTree();/*文本模式下创建树的过程*/Tree *InitTree(int h,int t,int w);/*创建树,h层次,t横坐标,w树之间的宽度,n树的建立方式*/void DrawTree(Tree *t);/*用图形显示创建好的树*/void Preorder(Tree *t);/*前序遍历*/void Midorder(Tree *t);/*中序遍历*/void Posorder(Tree *t);/*后序遍历*/void DrawNode(Tree *t,int color);/*遍历时显示每个结点的过程*/void ClrScr();/*清空树的区域*/void main(){?? Tree *root;?? randomize();?? root=CreatTree();/*创建树*/?? Init();?? DrawTree(root);/*每次遍历前显示白色的树*/?? sleep(1);?? s.x=100;s.y=300;s.num=1;/*每次遍历前设置显示遍历顺序显示的x,y坐标*/?? Preorder(root);/*前序遍历*/?? getch();?? ClrScr();?? DrawTree(root);?? sleep(1);?? s.x=100;?? s.y=350;?? s.num=1;?? Midorder(root);/*中序遍历*/?? getch();?? ClrScr();?? DrawTree(root);?? sleep(1);?? s.x=100;?? s.y=400;?? s.num=1;?? Posorder(root);/*后序遍历*/?? Close();}/*清空树的区域*/void ClrScr(){?? setcolor(BLACK);?? setfillstyle(SOLID_FILL,BLACK);?? bar(0,20,640,280);}/*文本模式下创建树的过程*/Tree *CreatTree(){?? Tree *root;?? clrscr();?? printf(please input n\n);?? printf(1.computer creat\n);?? printf(2.people creat\n);?? way=getch();/*输入创建树的方法,1电脑自动建立,2人工手动建立*/?? if(way!=2)????? way=1;/*其他数字默认自动建立*/?? if(way==2)/*手动建立提示输入结点*/????? printf(Please creat the tree\n);?? root=InitTree(1,320,150);?? system(pause);?? return root;}/*生成二叉树,h表示层次,t表示横坐标,w表示结点左右子树的宽度,随机数n确定结点是空或非空,如n为0,则为空*,但要限定确保结点数不少于三个*/Tree *InitTree(int h,int t,int w){?? char ch;?? int n;/*自动建立时随机赋值判断是否是NULL的标志*/?? Tree *node;?? if(way==2)/*手动建立需要自己输入*/????? scanf(%c,ch);?? else/*自动建立的赋值*/?? {????? n=random(5);????? if(n==0nodeNUM=3)/*随机赋值时候确保
显示全部