数据结构——平衡搜索树(AVL、红黑树、B树)

本文详细介绍了平衡搜索树的概念,重点讲解了AVL树的特点、插入操作以及旋转机制,同时探讨了红黑树的特性及插入规则。此外,还对比了B树在数据库索引中的应用,特别是在Mysql中的优化策略。
摘要由CSDN通过智能技术生成

一、搜索数据结构

1. 概述

1)搜索/查找:
①遍历查找 O(n)

②二分查找 O(log(n))

③哈希表 O(1)

④搜索树(平衡搜索树)

几种查找方式的比较:
在这里插入图片描述
哈希表实现线程安全还算容易,但树要实现线程安全不太容易

二、 AVL树

1、特点

AVL树必须是二叉树,必须是搜索树,任取树上节点且该节点的左右子树高度差不超过1(BF∈(-1,0,1))。是二叉搜索树的一种进化版本。

class AVLTreeNode{
   
	Key key;
	Value value;

	AVLTreeNode left;
	AVLTreeNode right;
	int BalanceFactory;//平衡因子(BF) = 左子树高度-右子树高度
}

和普通搜索树的查找方式完全一致,只不过维护了平衡因子。

2、搜索树的旋转(不只是AVL树,只要是搜索树,都可以旋转)※

考虑通常情况下
1)左旋

  • 左旋前:
    在这里插入图片描述
  • 左转后:
    在这里插入图片描述

发现只有红线的指向关系发生了变化,根据分析代码如下:

private void leftRotate(Node parent){
   
        Node parentOfParent = parent.parent;
        Node right = parent.right;
        Node leftOfRight = right.left;

        right.parent = parentOfParent;

        //需要明确原来的parent是parentOfParent的左或右,或他是否是根
        if(parentOfParent==null){
   
            //原来的根是parent
            //现在是right
             root = right;
        }else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值