二叉排序树的查找、插入
下面是查找代码:
// 二叉树的二叉链表结点结构定义
typedef struct BiTNode
{int data;struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;// 递归查找二叉排序树 T 中是否存在 key
// 指针 f 指向 T 的双亲,其初始值调用值为 NULL
// 若查找成功,则指针 p 指向该数据元素结点,并返回 TRUE
// 否则指针 p 指向查找路径上访问的最后一个结点,并返回 FALSE
Status SearchBST(BiTree T, int key, BiTree f, BiTree *p)
{if( !T ) // 查找不成功{*p = f;return FALSE;}else if( key == T->data ) // 查找成功{*p = T;return TRUE;}else if( key < T->data ){return SearchBST( T->lchild, key, T, p ); // 在左子树继续查找}else{return SearchBST( T->rchild, key, T, p ); // 在右子树继续查找}
}
下面是插入:
// 当二叉排序树 T 中不存在关键字等于 key 的数据元素时,
// 插入 key 并返回 TRUE,否则返回 FALSE
Status InsertBST(BiTree *T, int key)
{BiTree p, s;if( !SearchBST(*T, key, NULL, &p) ){s = (BiTree)malloc(sizeof(BiTNode));s->data = key;s->lchild = s->rchild = NULL;if( !p ) {*T = s; // 插入 s 为新的根结点}else if( key < p->data ){p->lchild = s; // 插入 s 为左孩子}else{p->rchild = s; // 插入 s 为右孩子}return TRUE;}else{return FALSE; // 树中已有关键字相同的结点,不再插入}
}
二叉排序树的查找、插入相关推荐
- 数据结构(8-3)二叉排序树(查找、插入删除)
目录 一.基础理论 1.特点: 2.结构: 二.查找 三.插入 四.删除 1.被删除的结点D是叶子结点 2.被删除的结点D仅有一个孩子 2-1.删除结点14(有左无右) 2-2.删除结点 10 (有右 ...
- 【大话数据结构C语言】56 二叉排序树的查找、插入和删除
欢迎关注我的公众号是[CodeAllen],关注回复[1024]获取精品学习资源 程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 目录 二叉排序树查找关键字 二叉排序 ...
- 二叉排序树的查找、插入、创建和删除
二叉排序树的特性: 1.若左子树非空,则左子树上所有结点的值均小于根节点的值: 2.若右子树非空,则右子树上所有结点的值均大于根节点的值: 3.左右子树又分别是一颗二叉排序树: 综上,左子树结点的值& ...
- 重温数据结构:二叉排序树的查找、插入、删除
读完本文你将了解到: 什么是二叉排序树 Binary Sort Tree, BST 二叉排序树的关键操作 1.查找 2.插入 3.删除 * 运行代码测试 一道面试题 总结 Thanks 我们知道,二分 ...
- java二叉排序树动态查找表_9.3.1动态查找表—二叉排序树
一.二叉排序树定义 二叉排序树(Binary Sort Tree)或者是一棵空树:或者是具有下列性质的二叉树: 我们知道一颗基本的二叉树他们都需要满足一个基本性质--即树中的任何节点的值大于它的左子节 ...
- 数据结构二叉排序树的查找
1.二叉排序树的查找 (1)非递归方式(最坏空间复杂度O(1)) typedef struct BSTNode{int key;struct BSTNode *lchild, *rchild; }BS ...
- 数据结构之算法(二叉排序树的查找分析)
在二叉排序树上查找其关键字等于给定值的结点的过程,恰是走了一条从根结点到该结点的路径的过程,和给定值比较的关键字个数等于路径长度加1(或结点所在层次数),因此,和折半查找类似,与给定值比较的关键字个数 ...
- DS二叉排序树之查找
题目描述 给出一个数据序列,建立二叉排序树,并实现查找功能 对二叉排序树进行中序遍历,可以得到有序的数据序列 输入 第一行输入t,表示有t个数据序列 第二行输入n,表示首个序列包含n个数据 第三行输入 ...
- 二叉排序树中查找效率最高的是
二叉排序树中查找效率最高的是平衡二叉树 二叉查找数的查找速度取决于树的深度 相同节点数深度最小的是平衡二叉树
最新文章
- C#事件的发送方和接收方(订阅方)
- 转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON
- Linux (CentOS)安装VNC+XFCE可视化桌面环境 附安装FireFox浏览器
- 新IT运维时代 | Docker运维之最佳实践-下篇
- oracle如何降低逻辑读,如何降低该SQL的逻辑读
- 访问者(Visitor)模式
- 如何下载centos最小的镜像文件
- Ubuntu 及其衍生版安装使用截图工具【深度截图】
- python3-开发进阶-仿博客园项目setting.py的文件的配置,admin,forms(2)
- 1 物料xxxxxx在仓库101里不存在
- 杀不死的人狼——我读《人月神话》(四)
- 紧急事态分析及处理方法
- 如何查看手机的android版本信息,怎么查看手机型号、配置、版本【图文教程】...
- 互联网产品经理好书推荐
- ftp服务器文件夹设置,ftp服务器可设置的文件夹
- mysql姓名三位随机_Mysql之生成随机数,随机字符串,随机姓名
- perl社工密码字典生成器
- 数学建模案例--基于微分方程的酒后驾车问题浅析
- ORA-01034和ORA-27101的解决方法
- idea中开启多个线程运行多个项目