二叉排序树与平衡二叉排序树的转化

    二叉排序树与平衡二叉树的转化开始单独看视频的时候感觉是明白的,但是看到题就不知所措了,如果单向旋转还可以,碰到LR型和RL型的就有困难了,所以一定要写个博客来把它弄懂。这篇博客会首先介绍二叉排序树,再介绍什么是平衡二叉树,为什么要会有平衡二叉排序树,最后来看转化。


1.什么是二叉排序树?


    二叉排序树(Binary Sort Tree)又称查找二叉树,它可以是一个空树,或者要满足以下条件:

   (1)左右子树各是一棵查找树。

   (2)如果有左子树,则左子树的各节点值均小于根节点的值。

   (3)如果有右子树,则右子树上的各节点值均大于根节点的值。


    总之就是它的左子树比根节点小,右子树比根节点大。


2.什么是平衡二叉树?


   平衡二叉树要么是一棵空树,或者是一棵这样的树:树种任一节点的左右子树的深度相差不超过1

   如定义结点的平衡度为其右子树的深度减去其左子树的深度,则对于平衡二叉树,它的每个结点的平衡度-1,0,1三个值之一.


3.为什么会有平衡二叉树?


   我们知道二叉排序树又称查找二叉树,平衡二叉树是一个排序二叉树,所以算是平衡二叉排序树,是用来查找的,看下面这张图,这张图是软考视频中的:


《二叉排序树与平衡二叉排序树的转化》


   如果查找1的话,第一个图要查找6次,第二个图只需要4次就可以了,所以深度相差越少,查找的次数越少.为了提高查找的效率,因此出现了平衡二叉树


4.二叉排序树与平衡二叉排序树的转化


   先看几种转换的方式:


   (1)LL型平衡旋转(单向右旋平衡处理)


《二叉排序树与平衡二叉排序树的转化》


  (2)RR型平衡旋转(单向左旋平衡处理)

《二叉排序树与平衡二叉排序树的转化》


  (3)LR型平衡旋转(双向旋转,先左后右)

《二叉排序树与平衡二叉排序树的转化》


  (4)RL型平衡旋转(双向旋转,先右后左)

《二叉排序树与平衡二叉排序树的转化》


    从上面的例子我们很容易看懂,做题的时候我们找到对应类型进行旋转,每次旋转90度。


    例题:

    下面是一个自考试题,以这个题为例, 进行旋转,先看原图:

《二叉排序树与平衡二叉排序树的转化》

  首先判断类型是LR型,先左后右,如果不知道子结点放在哪里可以想一下二叉排序树的特点,就知道数怎么放了。

《二叉排序树与平衡二叉排序树的转化》                                                《二叉排序树与平衡二叉排序树的转化》


上面的图就是旋转的过程,不知道大家明白了没有


小结:


      看理论觉得是懂得,真正做题就模糊了,这里面掌握了一些概念,想着这些树的特点,用理论指导实践,把这些理论用到实处发现其实很简单。本来对它不熟悉,所以写这篇博客来进行总结,总结完之后就会了,哈哈~


    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/ww130929/article/details/49029895
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞