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

相关推荐
琢磨先生David7 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
qq_454245037 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝7 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
岛雨QA7 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc7 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
wefg17 天前
【算法】单调栈和单调队列
数据结构·算法
岛雨QA7 天前
图「Java数据结构与算法学习笔记12」
数据结构·算法
czxyvX7 天前
020-C++之unordered容器
数据结构·c++
岛雨QA7 天前
多路查找树「Java数据结构与算法学习笔记11」
数据结构·算法
AKA__Zas7 天前
初识基本排序
java·数据结构·学习方法·排序