数据结构之二叉查找树&平衡二叉树&红黑树

前言
  • 本文力求用通俗易懂的方式来讲解数据结构,在介绍红黑树之前先介绍一下什么是查找二叉查找树(Binary Search Tree)简称BST,什么是平衡二叉树(Balanced Binary Tree)又称为AVL树
一、二叉查找树的定义
  • 先上图
    二叉查找树
  • 根据上图大家可能发现了一定的规律,每个节点的左孩子都小于此节点而右孩子都大于此节点没错这正是二叉查找树的一个特点
  • 接下来咱们正规的讲一下什么是二叉查找树
    • 二叉查找树可以是一颗空树(即null)为什么会这条定义呢,个人认为应该是为了程序方便运行
    • 当二叉查找树不为空时有如下定义
      • 若它的左子树不为空,则左子树上的节点值都小于它的根节点,若它的右子树不为空则右子树上的所有节点值都大于它的根节点
      • 它的左右子树又分别为二叉查找树
        非空二叉查找树图示定义
二、二叉查找树有什么特点
  • 例1: 将元素3,4,5,6,7,8,9,10,11,12,13,14存入到如下的线性表(也可以认为是数组)查找元素10需要从线性表第一个位置即元素3开始一一比较一共需要比较8次才能找到,同理查找5需要比较3次,查找8需要比较6次,由此可以看出对于长度为N的线性表平局比较次数为(1+n)/2次,用等差数列求和公式可以推出
    线性表
  • 例2: 将元素3,4,5,6,7,8,9,10,11,12,13,14存入到如下的查找二叉树结构中查找元素10需要从根节点9开始比较由于10大于9因此去9的右子树找,11小于10去11的左子树找,10等于10成功找到,这过程一共比较了3次,同理查找5需要比较4次,查找8需要比价4次,由此可以看出对于拥有N个节点的排序二叉树查任意节点的比较次数最小为1次最大为树的高度
    查找二叉树
  • **例3:**当排序二叉树像下图这样极度不均匀的话,那么他的查找效率几乎与线性表相同
    在这里插入图片描述
三、什么是平衡二叉树
  • 结合以上例子引申出平衡二叉树(Balanced Binary Tree),至于什么是平衡二叉树,先上图
    平衡二叉树
  • **定义:**它是一 棵空树或它的左右两个子树的高度之差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
四、关于平衡二叉树的性能分析
  • 由平衡二叉树的定义可以知平衡二叉树的查询性能比较好,且稳定
  • 由于平衡二叉树要时刻保持树的平衡特性,在新增和删除节点时要进行调整以保持树的平衡特性,这是一个代价比较高的操作
五 、关于平衡二叉树调整的几种方式
  • 过程较为复杂,后续更新
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值