平衡二叉树(Balanced Binary Tree)

Posted 二狗Code俱乐部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡二叉树(Balanced Binary Tree)相关的知识,希望对你有一定的参考价值。

<What is Balanced Binary Tree?>

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 平衡二叉树(Balanced Binary Tree)

<二叉排序树BST>

在此之前,说说二叉排序树BST(也叫二叉查找树,大家别看叫做二叉排序树,其实设计它是为了提高查找插入删除关键字的速度。)二叉排序树简单通俗粗暴的来说,就是左子树上的结点关键字值都小于根结点关键字值,右子树上的结点关键字值都大于根结点关键字值。das heisst,您对这样的二叉排序树进行中序遍历,就可以得到一个递增的有序序列啦。

平衡二叉树(Balanced Binary Tree)

fig1<())[GO!]二叉排序树

<二叉平衡树BBT>

今天要说的平衡二叉树,是为了避免树的高度长的太快,比如单支树那样。我们规定任意结点的左右子树高度差不超过1.,这样的二叉树就是平衡二叉树。那么这样的左右子树高度差呢,我们称其为平衡因子。所以平衡因子只可以有三个取值,{-1,0,1}.我这里简单画一个。

平衡二叉树(Balanced Binary Tree)

fig2平衡二叉树,中间的数值就是平衡因子

 

<论平衡二叉树的自我调整>  

——斯坦尼斯拉夫斯基

我们主要聊的就是当我们往二叉排序树中插入或删除一个结点时,首先要看看是不是打破了原先的平衡。不速之客啊。如果打破了汉东省原有的政治生态。怎么办,我们要调整。先找到陈岩石老同志——先找到插入路径上离插入结点最近的平衡因子绝对值大于1的结点“陈岩石”。再对以“陈岩石”为根的子树,在保持二叉排序树的特性前提下,调整、巩固、充实、提高。

注意每次调整的对象都是最小不平衡子树,就是我们刚才说的最近的陈岩石那里开始。我们下面举几个例子就知道了。

fig3插入和调整

fig4 check this out.这个师长还是没变啊,Interesting.

当然,我们插入后失去平衡一般可以归纳为4种情况,上面举的例子是LR旋转。

还有

(1) LL平衡旋转(右单旋转),就是在“陈岩石”根结点的左孩子(L)的左子树(L)上插入了新结点。

(2) RR旋转(左单旋转),Ross&Rachel~

(3) LR旋转(先左后右双旋转) (4)RL旋转(先右后左双旋转)~~~相信大家通过举得栗子就可以举一反三了。

 

good night everyone~

 


以上是关于平衡二叉树(Balanced Binary Tree)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 110 Balanced Binary Tree(平衡二叉树)(*)

平衡二叉树Balanced Binary Tree

[Leetcode] Balanced binary tree平衡二叉树

LeetCode 110. 平衡二叉树 Balanced Binary Tree (Easy)

十五、平衡二叉搜索树(Balanced Binary Search Tree)

110. Balanced Binary Tree 110.平衡二叉树