平衡二叉树是二叉树变异,规则更加苛刻
想要将二叉树变为平衡二叉树,主要通过左旋和右旋来处理,
平衡二叉树和二叉树的区别是:
一:平衡二叉树要求重最上层的跟节点到最下面的叶节点经过的路程或者数据个数到小于或者与绝对值1
(根节点到叶节点的路径长度的最大值和最小值分别为a和b,那么a-b的绝对值要大于或等于1 ,如有 |a-b| >=1)
二:平衡树的根节点的左侧数据必须小于根节点,右侧树的数据必须大于根节点
开始解释平衡二叉树和二叉树的区别第一个点
下面开始上图(这个图只是普通的二叉树):
从90到6要经过4条线链接,从90到16要经过2条线, 4-2=2但是2大于绝对值1,所以下面的的只是普通的二叉树
开始解释平衡二叉树和二叉树的区别第二个点
下面开始上图(这个图只是AVL平衡二叉树):
根节点11的左边都是小于11,右边都大于11
这里补充第一个区别的图和说明
11是根节点,从11到3需要经过2条线,从11到16需要经过3条线,所以 |2-3|>=1这个计算是成立的
至于平衡二叉树的添加删除节点后,导致失衡后如何通过左旋右旋来保持平衡,可以https://www.bilibili.com/video/BV1eQ4y1d7e9/?spm_id_from=pageDriver去看看,讲解很详细,有空也会加上左旋右旋调整
注释:如有问题请指出,转载时,请标明出处