【数据结构-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 总结

相关推荐
代码探秘者9 分钟前
【算法】吃透18种Java 算法快速读写模板
数据结构·数据库·python·算法·spring
WolfGang00732140 分钟前
代码随想录算法训练营 Day21 | 回溯算法 part03
数据结构·算法
深邃-43 分钟前
数据结构-队列
c语言·数据结构·c++·算法·html5
keep intensify1 小时前
二叉树的直径
数据结构·算法·深度优先
keep intensify1 小时前
单源最短路径
数据结构·c++·算法
篮l球场2 小时前
数组中的第K个最大元素
数据结构·算法·leetcode
月落归舟2 小时前
排序算法---(三)
数据结构·算法·排序算法
篮l球场3 小时前
前 K 个高频元素
数据结构·算法·leetcode
历程里程碑3 小时前
Proto3 三大高级类型:Any、Oneof、Map 灵活解决复杂业务场景
java·大数据·开发语言·数据结构·elasticsearch·链表·搜索引擎
季明洵4 小时前
动态规划及背包问题
java·数据结构·算法·动态规划·背包问题