文档详情

C语言课程设计 二叉树演示源程序.doc

发布:2017-12-24约4.27千字共9页下载文档
文本预览下载声明
/*二叉树演示源程序#include graphics.h #include stdio.h #include stdlib.h #include dos.h #include time.h typedef 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)/*随机赋值时候确保
显示全部
相似文档