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

相关推荐
路灯上の马陈4 小时前
二叉树的定义与性质
数据结构·二叉树·树结构·1024程序员节
Bshaya_7 小时前
红黑树详解:概念、规则与插入实现
数据结构·红黑树·二叉搜索树·平衡树·插入逻辑
WBluuue8 小时前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
路灯上の马陈9 小时前
数据结构-树
数据结构·1024程序员节
benjormin9 小时前
Java数据结构 二叉搜索树
数据结构·算法
H.莓飛13 小时前
【数据结构】排序总结与规模实测
linux·服务器·开发语言·数据结构·visual studio·1024程序员节
码少女14 小时前
数据结构——B+树基础
数据结构·b树
揽星河..16 小时前
【初阶数据结构】常见的排序算法
数据结构·排序算法·1024程序员节
YLCHUP16 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
啊啊啊啊啊!!!!17 小时前
【c++】⽤哈希表封装myunordered_map和myunordered_set
数据结构·哈希算法·散列表