树和二叉树的应用:二叉排序树

  • 思维导图:
  • 二叉排序树的定义:
  • 二叉排序树节点结构:
  • 二叉排序树的查找:
  • 二叉排序树的插入:
  • 二叉排序树的构造:
  • 二叉排序树的删除:
  • 二叉排序树先删除再插入某个相同值的节点,得到的二叉排序树相同吗?
  • 查找效率:

思维导图:

二叉排序树的定义:

二叉排序树节点结构:

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)相关推荐

  1. 数据结构-王道-树和二叉树

    [top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...

  2. 【数据结构】 树与二叉树的基本概念、结构特点及性质

    前言:本章内容主要是数据结构中树与二叉树的基本概念.结构特点及性质的引入. 文章目录 树的概念 树的特点: 树的常用术语: 树的表示: 代码创建: 树在实际中的应用: 二叉树的概念 特殊的二叉树 满二 ...

  3. 数据结构之树与二叉树

    数据结构之树与二叉树 1.树的概念及结构 1.1.什么是树? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合.树是递归定义的.之所以把它叫做树是因为它看起来像 ...

  4. 【图解数据结构】树和二叉树全面总结(上)

    目录 一.前言 二.树的概念和定义 三.二叉树 1.基本概念 2.基本形态 3.性质 4.满二叉树 5.完全二叉树 四.存储结构 1.顺序存储 2.二叉链表 3.三叉链表 一.前言 学习目标:理解树和 ...

  5. 系统掌握数据结构9树与二叉树第三节

    树与二叉树 第三节 1.树与森林 1.1 树的存储结构 1.2 森林的存储结构 1.3 树与森林的抽象数据类型 2.树的应用 一.二叉排序树(BST) 2.1 应用场景 2.2. 二叉排序树的定义 2 ...

  6. 数据结构 5-0 树与二叉树总结

    前言 数据结构复习过程中最先遭遇的磕碰,这一章内容及其多,而且可以考得很难,不仅是代码题,填空题有些也很有难度.主要是四部分内容:树的基本概念.二叉树.树与森林.树的应用.题目以选择题为主,因为代码题 ...

  7. 《王道》数据结构之树和二叉树(五)

    数据结构入门之树和二叉树(五) 大纲 一.树的概念和性质 1.1 树的概念 1.1.1 树的定义 1.1.2 结点分类与结点间关系 1.1.3 树的其他相关概念 1.2 (非空)树的性质 1.3 树的 ...

  8. 王道计算机考研 数据结构 (树与二叉树)

    第五章.树与二叉树 5.1.1_树的定义和基本术语 树的基本概念 结点.树的属性描述 有序树vs无序树 树vs森林 思维导图 5.1.2_树的性质 考点1 考点2 考点3 考点4 考点5 考点6 思维 ...

  9. 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)

    数据结构(第六章) 树与二叉树 1. 树与二叉树的相互转换 2. 森林与二叉树的相互转换 3. 二叉树的遍历 3.1 层序遍历(广度优先遍历) 2. 深度优先遍历 3. 树转化为二叉树的遍历 将一颗 ...

最新文章

  1. 8.2.4临时表和正式表
  2. 学习小技巧---javascript中获取服务器端控件生成的页面ID
  3. 20180105随笔
  4. 解读业界5种主流的深度网络模型
  5. 华为Mate40系列后置摄像头模组曝光:三款机型各有不同
  6. wordpress本地网站怎么搬到服务器,如何把wordpress从本地服务器迁徙到网站主机上...
  7. 带圆圈的数字和markdown常用表达式记录(持续更新中)
  8. 降雪致国道315线部分道路通行受阻公路交警部门昼夜坚守
  9. C++几个常用的排序
  10. 【游戏客户端】制作节奏大师Like音游(全)
  11. Java抽象类与接口详解
  12. Java中对两个对象进行比较大小
  13. B站JavaScript从入门到精通Blue石川老师视频部分代码_运动升级_链式运动_土豆网
  14. three.js学习笔记(五)——Shadows阴影
  15. 【入门数据分析】淘宝用户行为分析
  16. Pandas中melt()的使用
  17. android4.0 U盘热插拔后挂载不上bug解决
  18. 大疆招聘java工程师_Java工程师(上海)
  19. html5 混合地址,混合引用是指在一个引用的单元格地址中的什么?
  20. QNX Hypervisor —— 虚拟机

热门文章

  1. 半路学编程,可以成为大牛吗?
  2. 程序员过年回家,如何向亲戚解释你的工作?
  3. 程序员情人节送这些!
  4. 怎样挑选最健康的酸奶?
  5. Pandoc提供二进制分发包了
  6. Hemberg-lab单细胞转录组数据分析(四)
  7. NOI数学:Burmside引理与Polya原理
  8. 第78课 通力合作的100个数
  9. PHP请求一次网页前端浏览一次后端会出现两次请求次数的原因和解决方法。
  10. 树莓派人脸识别_【树莓派人工智能篇】第7课 垃圾分类