花了好久弄好的二叉树代码,希望能帮到你们
超级详细二叉树实现
1、二叉树程序功能
前情提要 !!!
头文件:
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<stdlib.h>
#include<Windows.h>
#include<math.h>
#pragma comment(lib,"Winmm.lib") // 引用 Windows Multimedia API
结构体:
typedef char datatype;
typedef struct node
{
datatype data;
struct node* lchild, * rchild;
}bitree;
宏列表:
//宏列表
#define WIDTH 864 //界面宽度
#define HEIGTH 553 //界面高度
#define MAX 100 //数组大小
#define MAXROW 100 //最大行数
#define MAXCOL 100 //最大列数
#define TOPMARGIN 50 //上边距
#define LEFTMARGIN 50 //左边距
#define ALLIMAGE 450 //图片最大张数
#define PATH 120 //路径大小
#define WIDTH_1 1280 //动画界面宽度
#define HEIGTH_1 590 //动画界面高度
函数列表:
//函数列表
void Animation(bitree* t); //开头动画
void MainMenu(); //主菜单界面
void mainmenu(); //主菜单实现
void SubMenu(); //子菜单界面
void submenu(bitree* t); //子菜单实现
void Out(bitree* t); //输出(前序 中序 后序)
void Preorder(bitree* t); //前序遍历
void Inorder(bitree* t); //中序遍历
void Lastorder(bitree* t); //后序遍历
bitree* Create(); //前序建表
int Heigth(bitree* t); //树的高度
void Change(bitree* t); //交换左右子树
void Leaf(bitree* t); //统计叶子数
bitree* Copytree(bitree* t); //复制二叉树
void AllPath(bitree *t, char path[], int pathLength); //所有路径
void LongestPath(bitree* t, char path[], int pathLength, char longestPath[]);//最长路径
//void gotoxy(int x, int y); //光标定位
void Start(); //初始数组
void Perfect(); //标志函数
void Draw(bitree* t, int root_x, int root_y, int r_c_interval, char disp_buf[][MAXCOL]);//字符二叉树
void DrawEasyx(bitree* tree,int x,int y,int xFar,int yFar); //easyx画二叉树
void PrintUITree(bitree* tree); //画图
void Root_Leaf(bitree* t); //根、叶结点
bitree* GetNode(bitree* t,char node); //查询结点
void Genealogy(bitree* t, bitree* treenode); //结点族谱
bitree *Parent(bitree* t, bitree* treenode); //双亲结点
int Ancestors(bitree* t, bitree* treenode); //祖先结点
void Children(bitree* treenode); //孩子结点
void Descendant(bitree* treenode); //子孙结点
bitree* Brother(bitree* t, bitree* treenode); //兄弟结点
int Floor(bitree* t, bitree* treenode,int height); //结点层数
全局变量:
//全局变量列表
static int num = 0; //叶子数
bitree* treeNode; //树的结点
static int longestlength = 0; //最长路径下标计数
char dispbuf[MAXROW][MAXCOL]; //存储二叉树结构图的数组
int effective_line; //记录二叉树数组中的使用过的行数
const int UI_FAR_X = 220;
const int UI_FAR_Y = 20;
1.1主菜单功能:

1.前序创建二叉树
在函数中调用Create()则可以进行前序遍历创建二叉树
//前序建表
bitree* Create()
{
bitree* t;
char ch;
ch = getchar();
if (ch==' ')//空格
{
t = NULL;
}
else
{
t = (bitree*)malloc(sizeof(bitree));
t->data = ch;
t->lchild = Create();
t->rchild = Create();
}
return t;
}
2.前中后序输出
//输出(前序 中序 后序)
void Out(bitree* t)
{
printf(

本文详细介绍了一个功能丰富的二叉树程序,包括创建、遍历、复制、交换子树等操作,并提供了绘制二叉树的方法。此外,还实现了查询结点及其家族成员的功能。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



