二叉排序树的操作(C语言)
来源:互联网 发布:电影淘淘源码 编辑:程序博客网 时间:2024/06/05 05:38
#include"stdio.h"
#include"stdlib.h"#include"string.h"
#define NUM 5
typedef struct BTNode
{
int key;
struct BTNode *lchild,*rchild;
}BTNode;
void BTInsert(BTNode *&T,int key);//插入节点
void CreateBTNode(BTNode *&T);//构造二叉排序树
void PrintfBTNode(BTNode *T);//中序遍历二叉排序树
BTNode *BTSearch(BTNode *T,int key);//查找
int CountBTNode(BTNode *T,int key);//查找小于key的元素个数
int main()
{
BTNode *T;
int sum=0;
T=NULL;
printf("\n----------构造二叉排序树-------\n");
CreateBTNode(T);
printf("\n----------打印二叉排序树-------\n");
PrintfBTNode(T);
printf("\n----------查找-------\n");
printf("%d",BTSearch(T,4)->key);
printf("\n----------查找小于3的元素个数-------\n");
printf("%d\t",CountBTNode(T,3));
system("pause");
return 0;
}
//插入节点
void BTInsert(BTNode *&T,int key)
{
if(T==NULL)
{
T=(BTNode *)malloc(sizeof(BTNode));
T->key=key;
T->lchild=T->rchild=NULL;
}
else
{
if(T->key > key)
BTInsert(T->lchild,key);
else if(T->key <key)
BTInsert(T->rchild,key);
}
}
//构造二叉排序树
void CreateBTNode(BTNode *&T)
{
int i,x;
for(i=0;i<NUM;i++)
{
printf("请输入数据:\n");
scanf("%d",&x);
BTInsert(T,x);
}
}
//中序遍历二叉排序树
void PrintfBTNode(BTNode *T)
{
if(T)
{
PrintfBTNode(T->lchild);
printf("%d\t",T->key);
PrintfBTNode(T->rchild);
}
}
//查找
BTNode *BTSearch(BTNode *T,int key)
{
if(T==NULL)
return 0;
else
{
if(T->key==key)
return T;
else if(T->key > key)
return BTSearch(T->lchild,key);
else
return BTSearch(T->rchild,key);
}
}
//查找小于key的元素个数
int CountBTNode(BTNode *T,int key)
{
if(T)
{
if(T->key > key)
return CountBTNode(T->lchild,key);
else if(T->key < key )
return CountBTNode(T->lchild,key)+1+CountBTNode(T->rchild,key);
else
return CountBTNode(T->lchild,key)+CountBTNode(T->rchild,key);
}
else
return 0;
}
1 0
- 二叉排序树的操作(C语言)
- C语言实现二叉排序树的相关操作
- 二叉排序树的建立以及相关操作 C语言
- C语言实现二叉排序树的增删查操作
- c语言:二叉排序树的实现
- C语言二叉排序树的实现
- C语言二叉排序树的创建
- 二叉排序树与文件的操作(C、C++)
- java语言实现二叉排序树的操作
- C/C++ 中二叉排序树 的操作
- 二叉排序树 C语言实现
- C语言实现二叉排序树
- 二叉排序树的实现(C#)
- 创建二叉排序树C语言实现
- 二叉排序树C语言实现一
- 二叉排序树C语言实现二
- 二叉排序树的基本操作(完整代码)
- C语言强化(一)二叉排序树转成排序的双向链表
- secureCRT传大文件
- memcache java解读
- adb报:adb server version (31) doesn't match this client (36); killing... 错误
- ubuntu 16.04下的latex的 section没有编号的问题
- 解决VS2013错误:Page '312e8a59-2712-48a1-863e-0ef4e67961fc' not found.
- 二叉排序树的操作(C语言)
- (java)字符串的相似度
- jar包、war包、ear包的内部结构
- Leetcode 58 Length of Last Word
- 如何删除双系统中的一个系统
- scrollReveal.js – 页面上下滚动时动画多次播放
- 【转载】编写Android.mk中的LOCAL_SRC_FILES的终极技巧
- sql 大全
- [如何]固态硬盘应该这样买