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

相关推荐
SHARK_pssm1 小时前
【数据结构——复杂度】
c语言·数据结构·经验分享·笔记
故事和你911 小时前
洛谷-【图论2-1】树2
开发语言·数据结构·c++·算法·动态规划·图论
努力努力再努力wz2 小时前
【Qt入门系列】深入理解信号与槽:从事件响应到自定义信号机制
c语言·开发语言·数据结构·数据库·c++·qt·mysql
Ricky_Theseus2 小时前
B树和B+树的区别
数据结构·b树
爱炼丹的James3 小时前
第二章 数据结构
数据结构
我爱cope3 小时前
【前缀和:3. 无重复字符的最长子串】
数据结构·算法·leetcode
不知名的忻3 小时前
关键路径(Java)
java·数据结构·算法·关键路径
C雨后彩虹3 小时前
SpringBoot整合Redis String,全套原生API讲解,覆盖80%缓存业务场景
java·数据结构·spring boot·redis·string
孬甭_3 小时前
顺序表详解
c语言·数据结构
qeen873 小时前
【算法笔记】各种常见排序算法详细解析(上)
c语言·数据结构·c++·学习·算法·排序算法