二叉搜索树代码
来源:互联网 发布:一生只爱你南风知意txt 编辑:程序博客网 时间:2024/04/28 13:56
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define NULL 0
typedef struct node
{
int data;
struct node * lchild;
struct node * rchild;
}Btree;
Btree*CreateBtree(int a[], int n)
{
int i;
Btree*root, *pb, *pa, *pc;
root = (Btree*)malloc(sizeof(Btree));
root->data = a[0];
root->lchild = root->rchild = NULL;
for (i = 1; i < n; i++)
{
pb = (Btree*)malloc(sizeof(Btree));
pb->data = a[i];
pb->lchild = pb->rchild = NULL;
pc = root;
while (pc)
{
pa = pc;
if (pc->data > pb->data) pc = pc->lchild;
else pc = pc->rchild;
}
if (pa->data > pb->data)
pa->lchild = pb;
else pa->rchild = pb;
}
return root;
}
void PreOrder(Btree*root)
{
if(root)
{
printf("%5d",root->data);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(Btree*root)
{
if(root)
{
InOrder(root->lchild);
printf("%5d",root->data);
InOrder(root->rchild);
}
}
void PostOrder(Btree*root)
{
if(root)
{
PostOrder(root->lchild);
PostOrder(root->rchild);
printf("%5d",root->data);
}
}
int CountNode(Btree*root)
{
int cr,cl;
if(root)
{
cr=CountNode(root->rchild);
cl=CountNode(root->lchild);
}
return cr+cl+1;
}
int DepthTree(Btree*root)
{
int dr,dl,d=0;
if(root)
{
dr=DepthTree(root->rchild);
dl=DepthTree(root->lchild);
d=dl>dr?dl+1:dr+1;
}
return d;
}
void main()
{
Btree*root = NULL;
int a[] = { 5,3,1,7,6,4,8,2 },count=0,d=0;
root = CreateBtree(a, 8);
PreOrder(root);
InOrder(root);
PostOrder(root);
count=CountNode(root);
printf("%5d",count);
d=DepthTree(root);
printf("%5d",d);
getchar();
}
#include<malloc.h>
#include<stdlib.h>
#define NULL 0
typedef struct node
{
int data;
struct node * lchild;
struct node * rchild;
}Btree;
Btree*CreateBtree(int a[], int n)
{
int i;
Btree*root, *pb, *pa, *pc;
root = (Btree*)malloc(sizeof(Btree));
root->data = a[0];
root->lchild = root->rchild = NULL;
for (i = 1; i < n; i++)
{
pb = (Btree*)malloc(sizeof(Btree));
pb->data = a[i];
pb->lchild = pb->rchild = NULL;
pc = root;
while (pc)
{
pa = pc;
if (pc->data > pb->data) pc = pc->lchild;
else pc = pc->rchild;
}
if (pa->data > pb->data)
pa->lchild = pb;
else pa->rchild = pb;
}
return root;
}
void PreOrder(Btree*root)
{
if(root)
{
printf("%5d",root->data);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(Btree*root)
{
if(root)
{
InOrder(root->lchild);
printf("%5d",root->data);
InOrder(root->rchild);
}
}
void PostOrder(Btree*root)
{
if(root)
{
PostOrder(root->lchild);
PostOrder(root->rchild);
printf("%5d",root->data);
}
}
int CountNode(Btree*root)
{
int cr,cl;
if(root)
{
cr=CountNode(root->rchild);
cl=CountNode(root->lchild);
}
return cr+cl+1;
}
int DepthTree(Btree*root)
{
int dr,dl,d=0;
if(root)
{
dr=DepthTree(root->rchild);
dl=DepthTree(root->lchild);
d=dl>dr?dl+1:dr+1;
}
return d;
}
void main()
{
Btree*root = NULL;
int a[] = { 5,3,1,7,6,4,8,2 },count=0,d=0;
root = CreateBtree(a, 8);
PreOrder(root);
InOrder(root);
PostOrder(root);
count=CountNode(root);
printf("%5d",count);
d=DepthTree(root);
printf("%5d",d);
getchar();
}
0 0
- 二叉搜索树代码
- 二叉搜索树代码
- 二叉搜索树 及 c++代码实现
- Java代码实现二叉搜索树-----插入
- 第12章:二叉搜索树代码:
- 搜索二叉树代码实现简析
- 二叉搜索树的 java 代码实现
- java 关于二叉搜索树,平衡二叉树,b树,二叉堆的几段代码
- 二叉搜索树的基本操作(C代码实现)
- 编程算法 - 二叉搜索树(binary search tree) 代码(C)
- 二叉搜索树的基本操作(含代码)
- Java代码实现二叉搜索树-----查询(二)
- 动态规划之最优二叉搜索树(代码)
- 算法导论第十二章-二叉搜索树-Cpp代码实现
- 插入并平衡二叉搜索树操作代码
- 二叉搜索树详解及实现代码(BST)
- 【二叉搜索数】HDU3791二叉搜索树
- 二叉树--二叉搜索树
- STM32-RTX CMSIS RTOS学习1
- 爬虫
- Litepal初始化数据库问题研究
- 求和∑ ∑
- springmvc 加载WebApplicationContext源码分析
- 二叉搜索树代码
- PHP实现简单数字分页效果
- java中存在的四种引用
- char*,const char*和string 三者转换
- Thread.interrupted()
- web前端开发初学者十问集锦(2)
- 1010 ProblemJ
- python(3)if中字符串的判断问题
- 使用socket.io打造公共聊天室