数据结构之树和二叉树的应用:二叉排序树(BST)
树和二叉树的应用:二叉排序树
- 思维导图:
- 二叉排序树的定义:
- 二叉排序树节点结构:
- 二叉排序树的查找:
- 二叉排序树的插入:
- 二叉排序树的构造:
- 二叉排序树的删除:
- 二叉排序树先删除再插入某个相同值的节点,得到的二叉排序树相同吗?
- 查找效率:
思维导图:
二叉排序树的定义:
二叉排序树节点结构:
typedef struct BSTNode{int key;struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
二叉排序树的查找:
原理:
代码实现:
与节点结构对应的非递归算法
与节点结构对应的递归算法
BSTNode *BST_Search(BiTree T,int key,BSTNode *&p){// p == NULL;while(T != NULL && key != T->data){// p = T;if(key < T->data)T = T->lchild;elseT = T->rchild;}return T;
}
二叉排序树的插入:
原理:
代码实现:
bool BST_Insert(BiTree &T,KeyType k){if(T == NULL){T = (BiTree)malloc(sizeof(BSNode));T->key = k;T->lchild = T->rchild = NULL;return true;}else if(k == T->key)return false;else if(K < T->key)return BST_Insert(T->lchild,k);elsereturn BST_Insert(T->rchild,k);
}
二叉排序树的构造:
原理:
代码实现:
void Create_BST(BiTree &T,int str[],int n){T = NULL;int i = 0;while(i < n){BST_Insert(T,str[i]);i ++;}
}
二叉排序树的删除:
1、 若被删除的节点为叶子节点时,则直接删除
2、 若被删除的节点只有一颗子树,则直接让子树代替被删除节点】
3、 若被删除的节点有俩颗子树,则让该节点的中序遍历序列直接后继代替该节点,并删除直接后继节点
方法1:用右子树的最小值替换删除节点
方法2:用左子树的最大值替换删除节点
二叉排序树先删除再插入某个相同值的节点,得到的二叉排序树相同吗?
答: 不同
查找效率:
平均查找长度: 该层的层数乘以该层的节点数之和,在除以一共的层数
1、查找成功
查找失败:
ps: (1x1+2x2+3x1) / 4 = 2
ps: (1x1+2x1+3x1+4x1) / 4 = 2.5
结论: 在构造二叉树时,尽量构造平衡二叉树,此时的平均查找长度最小
数据结构之树和二叉树的应用:二叉排序树(BST)相关推荐
- 数据结构-王道-树和二叉树
[top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...
- 【数据结构】 树与二叉树的基本概念、结构特点及性质
前言:本章内容主要是数据结构中树与二叉树的基本概念.结构特点及性质的引入. 文章目录 树的概念 树的特点: 树的常用术语: 树的表示: 代码创建: 树在实际中的应用: 二叉树的概念 特殊的二叉树 满二 ...
- 数据结构之树与二叉树
数据结构之树与二叉树 1.树的概念及结构 1.1.什么是树? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合.树是递归定义的.之所以把它叫做树是因为它看起来像 ...
- 【图解数据结构】树和二叉树全面总结(上)
目录 一.前言 二.树的概念和定义 三.二叉树 1.基本概念 2.基本形态 3.性质 4.满二叉树 5.完全二叉树 四.存储结构 1.顺序存储 2.二叉链表 3.三叉链表 一.前言 学习目标:理解树和 ...
- 系统掌握数据结构9树与二叉树第三节
树与二叉树 第三节 1.树与森林 1.1 树的存储结构 1.2 森林的存储结构 1.3 树与森林的抽象数据类型 2.树的应用 一.二叉排序树(BST) 2.1 应用场景 2.2. 二叉排序树的定义 2 ...
- 数据结构 5-0 树与二叉树总结
前言 数据结构复习过程中最先遭遇的磕碰,这一章内容及其多,而且可以考得很难,不仅是代码题,填空题有些也很有难度.主要是四部分内容:树的基本概念.二叉树.树与森林.树的应用.题目以选择题为主,因为代码题 ...
- 《王道》数据结构之树和二叉树(五)
数据结构入门之树和二叉树(五) 大纲 一.树的概念和性质 1.1 树的概念 1.1.1 树的定义 1.1.2 结点分类与结点间关系 1.1.3 树的其他相关概念 1.2 (非空)树的性质 1.3 树的 ...
- 王道计算机考研 数据结构 (树与二叉树)
第五章.树与二叉树 5.1.1_树的定义和基本术语 树的基本概念 结点.树的属性描述 有序树vs无序树 树vs森林 思维导图 5.1.2_树的性质 考点1 考点2 考点3 考点4 考点5 考点6 思维 ...
- 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)
数据结构(第六章) 树与二叉树 1. 树与二叉树的相互转换 2. 森林与二叉树的相互转换 3. 二叉树的遍历 3.1 层序遍历(广度优先遍历) 2. 深度优先遍历 3. 树转化为二叉树的遍历 将一颗 ...
最新文章
- 8.2.4临时表和正式表
- 学习小技巧---javascript中获取服务器端控件生成的页面ID
- 20180105随笔
- 解读业界5种主流的深度网络模型
- 华为Mate40系列后置摄像头模组曝光:三款机型各有不同
- wordpress本地网站怎么搬到服务器,如何把wordpress从本地服务器迁徙到网站主机上...
- 带圆圈的数字和markdown常用表达式记录(持续更新中)
- 降雪致国道315线部分道路通行受阻公路交警部门昼夜坚守
- C++几个常用的排序
- 【游戏客户端】制作节奏大师Like音游(全)
- Java抽象类与接口详解
- Java中对两个对象进行比较大小
- B站JavaScript从入门到精通Blue石川老师视频部分代码_运动升级_链式运动_土豆网
- three.js学习笔记(五)——Shadows阴影
- 【入门数据分析】淘宝用户行为分析
- Pandas中melt()的使用
- android4.0 U盘热插拔后挂载不上bug解决
- 大疆招聘java工程师_Java工程师(上海)
- html5 混合地址,混合引用是指在一个引用的单元格地址中的什么?
- QNX Hypervisor —— 虚拟机