【数据结构-7.2查找】二叉排序树-平衡二叉树

一、二叉排序树

1.1 二叉排序树的定义

  • 二叉排序树可用于元素的有序组织、搜索
  • 左子树结点值 < 根结点值 < 右子树结点值
  • 进行中序遍历,可以得到一个递增的有序序列

1.2 查找操作

  • 二叉排序树的查找过程
  • 使用递归实现,会增加空间复杂度

1.3 插入操作

  • 二叉排序树插入过程
  • 二叉排序树的构造

1.4 删除操作

  • 被删除节点z是叶子节点
  • 被删除结点z只有一棵左子树或右子树

  • 被删除结点z有2棵左右子树(直接后继替代法

    下图二叉树的中序遍历序列为:8 → 11 → 13 → 19 → 21 → 26 → 30 → 50 → 61 → 63 → 65 → 60 → 66 → 70

    由二叉树的遍历序列可知,值为60的节点就是z的右子树的最左下节点,因此可以直接将60替换到z节点位置

  • 被删除结点z有2棵左右子树(直接前驱替代法


1.5 查找效率分析

  • 最好情况与最快情况
  • 平衡二叉树查找效率
  • 查找长度

1.6 总结

二、平衡二叉树

2.1 定义

平衡二叉树:结点的左右子树的高度差不超过1

2.2 插入新结点后如何调整"不平衡"问题

2.2.1 LL:在A的左孩子的左子树中插入导致不平衡
2.2.2 RR:在A的右孩子的右子树中插入导致不平衡
  • 原理
  • 相关练习
2.2.3 LR:在A的左孩子的右子树中插入导致不平衡
  • 原理


  • 相关练习
2.2.4 RL:在A的右孩子的左子树中插入导致不平衡
  • 原理
  • 相关练习

2.3 查找效率分析

2.4 总结

相关推荐
故事和你915 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
破浪前行·吴7 小时前
数据结构概述
数据结构·学习
小欣加油8 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼8 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode
码完就睡12 小时前
数据结构——栈和队列的相互模拟
数据结构
iiiiyu12 小时前
常用API(SimpleDateFormat类 & Calendar类 & JDK8日期 时间 日期时间 & JDK8日期(时区) )
java·大数据·开发语言·数据结构·编程语言
故事和你9112 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
꧁细听勿语情꧂13 小时前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
Felven13 小时前
B. The 67th 6-7 Integer Problem
数据结构·算法
研☆香14 小时前
聊一聊如何分析js中的数据结构
开发语言·javascript·数据结构