数据结构---树
来源:互联网 发布:微创拔牙多少钱 知乎 编辑:程序博客网 时间:2024/05/22 03:35
//定义二叉链式结构
#define QUEUE_MAXSIZE 50
typedef char DATA;typedef struct ChainTree
{
DATA data;
struct ChainTree *left;
struct ChainTree *right;
}ChainBinTree;
//初始化二叉树
{
if(node != NULL)
return node;
else
return NULL;
}
int BinTreeAddNode(ChainBinTree *bt,ChainBinTree *node,int n)
{
if(bt == NULL)
{
printf("root is not here");
return 0;
}
switch(n)
{
case 1:
if(bt->left)
{
printf("left not null");
return 0;
}
else
bt->left = node;
break;
case 2:
if(bt->right)
{
printf("right not null");
}
else
bt->right = node;
break;
default:
printf("arg is error");
return 0;
}
return 1;
}
//获取左子树
ChainBinTree *BinTreeLeft(ChainBinTree *bt)
{
if(bt)
return bt->left;
else
return NULL;
}
//获取右子树
{
if(bt)
return bt->right;
else
return NULL;
}
//判断二叉树是否为空
{
if(bt)
return 0;
else
return 1;
}
//获取树的深度
int BinTreeDepth(ChainBinTree *bt){
int dep1,dep2;
if(bt == NULL)
return 0;
else
{
dep1 = BinTreeDepth(bt->left);
dep2 = BinTreeDepth(bt->right);
if(dep1 > dep2)
return dep1+1;
else
return dep2 +1;
}
}
//在树中查找
{
ChainBinTree *p;
if(bt == NULL)
return NULL;
else
{
if(bt->data == data)
return bt;
else
{
if(p = BinTreeFind(bt->left,data))
return p;
else if(p = BinTreeFind(bt->right,data))
return p;
else
return NULL;
}
}
}
//清空树
{
if(bt)
{
BinTreeClear(bt->left);
BinTreeClear(bt->right);
free(bt);
bt = NULL;
}
return;
}
//先序遍历
{
if(bt)
{
oper(bt);
BinTree_DLR(bt->left,oper);
BinTree_DLR(bt->right,oper);
}
return;
}
//中序遍历
{
if(bt)
{
BinTree_LDR(bt->left,oper);
oper(bt);
BinTree_LDR(bt->right,oper);
}
return;
}
//后序遍历
{
if(bt)
{
BinTree_LRD(bt->left,oper);
BinTree_LRD(bt->right,oper);
oper(bt);
}
return;
}
//按层遍历
{
ChainBinTree *p;
ChainBinTree *q[QUEUE_MAXSIZE];
int head = 0,tail = 0;
if(bt)
{
tail = (tail+1) % QUEUE_MAXSIZE;
q[tail] = bt;
}
while(head != tail)
{
head = (head +1) % QUEUE_MAXSIZE;
p = q[head];
oper(p);
if(p->left != NULL)
{
tail = (tail+1) % QUEUE_MAXSIZE;
q[tail] = p->left;
}
if(p->right != NULL)
{
tail = (tail+1) % QUEUE_MAXSIZE;
q[tail] = p->right;
}
}
return ;
}
0 0
- 数据结构--树
- 树--数据结构
- 数据结构-树
- 【数据结构】树
- 数据结构--树
- 数据结构---树
- 数据结构---->树
- 数据结构 树
- 数据结构树
- 数据结构 树
- 数据结构----树
- 数据结构--树
- 数据结构 - 树
- 数据结构:树
- 数据结构 - 树
- 数据结构-树
- 数据结构---树
- 数据结构:树
- iOS RunLoop 基本概念以及使用场景
- 设计模式之---桥接模式
- mySQL安装与使用
- workman使用笔记
- 二分贪心--06
- 数据结构---树
- SpringBoot的定时任务两种(Spring Schedule 与 Quartz 整合 )实现
- Python:字符串
- WININET函数保持sessionID不过期
- JS日期插件:My97DatePicker
- OpenCV学习---绘制直方图(一维、H-S、RGB)
- java源码剖析之Stack
- dp px转换
- SpringBoot非官方教程 | 第二十一篇: springboot集成JMS