每日编程24之BST
来源:互联网 发布:mac os x最新系统下载 编辑:程序博客网 时间:2024/06/05 22:37
BST,二叉查找树,又叫排序二叉树,指一种树,对于每一个树节点,其左子树的值<root值<右子树的值,这一特性主要用来优化查找操作,在树较为平衡的情况下,查找的复杂度为O(H),或O(logN)。。。但一般在某一段时间插入的数据的局部集中性很强,很有可能会破坏树的平衡性,使得查找的复杂度增加,因此明天讨论二叉查找树的变形——平衡二叉树,红黑树
关键的操作
(1)根据元素序列,初始化,构建一颗二叉查找树,基于插入操作
(2)对于一颗二叉查找树,插入一个元素,并保持二叉查找树的特征
(3)查找操作,删除操作
int insert_bst(BTree bst,int e)
{
struct node *pt = bst;
while(pt)
{
if(e < pt->data) pt = pt->left;
else pt = pt->right;
}
pt = (struct node *)malloc(sizeof(struct node));
pt->data = e;
}
int init_bst(BTree &bst)
{
int ch;
while((ch=getchar())!='x')
{
if(!bst)
{
bst = (struct node*)malloc(sizeof(struct node));
bst->data = ch-'0';
break;
}
insert_bst(bst,ch-'0');
}
}
struct node* search_bst(BTree bst,int e)
{
while(bst)
{
if(e==bst->data) return bst;
if(e > bst->data) bst=bst->right;
else bst=bst->left;
}
printf("no element %d found!\n",e);
return NULL;
}
OVER!!!
- 每日编程24之BST
- 每日编程26之红黑树
- 每日编程之JAVA笔记
- 每日编程1之冒泡排序
- 每日编程2之快速排序
- 每日编程4之单链表反转
- 每日编程5之逆序输出单链表
- 每日编程13之希尔排序
- 每日编程14之取单链表中间元素
- 每日编程23之汉诺塔问题
- 每日编程25之求二叉树镜像
- 每日一省之——使用递归法实现二叉查找树(BST),API齐全
- 网络编程部分:Socket编程之每日箴言客户端
- 每日编程3之快速排序随机化版本
- 每日编程6之单链表反转递归版本
- 每日编程7之快速排序非递归版本
- 每日编程11之树的层次遍历
- 每日编程12之用二个栈实现队列操作
- C#线程调用带参数的方法 ~
- rhel使用积累
- Python 运算符
- 黑马程序员------泛型
- linux 3.0.8 alsa数据流程分析
- 每日编程24之BST
- 如何学习单片机
- Redis源码学习之【网络通信框架】
- gcc的-D和-U参数:宏的设置与取消
- linux时钟服务器配置
- ArcGIS自定义坐标变换中的方法说明
- 误删数据 恢复数据 问题反馈
- 顺时针打印矩阵
- 不说理的发回重审是司法腐败的通行证