图形化二叉树演示软件

这是一个使用C语言编写的程序,实现了图形化的二叉树操作,包括创建、显示、遍历、添加、删除、查找等功能。用户可以通过自定义遍历方式输入数据,程序会根据输入构建二叉树并在屏幕上显示。程序支持前序、中序和后序遍历,还提供了查找节点、删除节点和获取树的高度和叶子节点数的功能。
摘要由CSDN通过智能技术生成

/*本程序具有 获取二叉树高度 获得叶子节点数 屏幕显示二叉树 添加 删除 查找 遍历功能。

使用方法:进入时采用自定义的遍历方式,即从左到右,从上到下进行输入,空点以点代替。*/

 #include <graphics.h>
#include <math.h>             /*使用pow()必需*/
#include <stdio.h>
int x2,y2;              /*根节点位置*/
int s = 0;               /*查找标志*/
char e[2];             /*接收单个字符*/
char se[2];
typedef struct node
{
 char data;
 double x,y;
 struct node * lChild;
 struct node * rChild;
}treeNode;
treeNode *  UserCreateTree(char *);        /*用户遍历创建树*/
void UserOrder(treeNode * );                   /*用户遍历,赋予节点位置信息,并画线*/
void TraverseTree(treeNode *);                /*图形显示树*/
void PreOrder(treeNode * ,int);                /*前序遍历*/
void InOrder(treeNode * ,int);     /*中序遍历*/
void PostOrder(treeNode * ,int);    /*后序遍历*/
void insert(treeNode * ,char ,char ,char ); /*插入节点*/
void deleteRoot(treeNode * ,char );          /*删除节点*/
void freeRootp(treeNode * );                    /*释放节点*/
int Leaf(treeNode * );                               /*查询叶子节点数*/
int High(treeNode * );                              /*查询树高*/
int menu(treeNode * );           /*显示菜单*/
void PreOrderSelect(treeNode * ,char );  /*查找节点*/
main()
{
 char p[31];
 int gdriver=DETECT,gmode;
    treeNode * rootp;
 int m = 1;
   registerbgidriver(EGAVGA_driver);

    gdriver = VGA;
    gmode = VGAHI;
    initgraph(&gdriver,&gmode,"");

    settextstyle(2,0,0);                 /*从左到右显示,8*8点阵字型*/
    setcolor(14);
    outtextxy(200,250,"welcome! this is tree!");
 
 printf("UserCreateTree:");
    scanf("%s",p);
    cleardevice();                         /*清屏函数*/
 rootp = UserCreateTree(p);
 UserOrder(rootp);
 TraverseTree(rootp);
 while(m)
 {
  m = menu(rootp);
 }
 closegraph(); 
}

/*用户遍历创建树*/
treeNode * UserCreateTree(char * p)
{
 treeNode * rootp;
 int i;
 int a[127] = {0};         /*存储树根地址*/
 for(i=0;p[i];i++)     /*建树根,存地址*/
 {
  if(p[i]!='.')                                         /*如果非点,建树根,赋数据,存树根地址*/
  {
   rootp = (treeNode *)malloc(sizeof(treeNode));
   if(!rootp)return 0;                  
   rootp->data = p[i];                         /*只赋节点数据*/
   a[

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值