博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构第四周】树知识点整理(下)【平衡二叉树】
阅读量:7173 次
发布时间:2019-06-29

本文共 596 字,大约阅读时间需要 1 分钟。

1、什么是平衡二叉树

 平衡因子(Balance Factor,简称BF):BF(T)=HL-HR,

HL和HR分别代表树T的左右子树的高度

平衡二叉树(Balanced Binary Tree)(AVL树)

空树,或者任一结点的左右子树的高度差的绝对值不超过1

假设nh是高度为h的平衡二叉树的最小结点数,则

2、平衡二叉树的调整

首先我们把平衡因子被破坏的结点称为“发现者”,而造成这种破坏的结点称为“麻烦结点”。

 发生不平衡需要调整的情况有下面四种:

(1)对某结点的右儿子的右子树进行了一次插入。 即麻烦结点在发现者的右子树的右边。(右右旋转)

  处理方法是把被破坏的结点的右子树上移一层,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

  举个例子:

 

 再举个例子:

(2)对某结点的左儿子的左子树进行了一次插入。即麻烦结点在发现者的左子树的左边。(左左旋转)

  处理方法是把被破坏者的左儿子上移一层变为父亲结点,被破坏者变成右儿子,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

(3)对某结点的左儿子的右子树进行了一次插入。即麻烦结点在发现者的左子树的右边。(左右旋转)

(4)对某结点的右儿子的左子树进行了一次插入。即麻烦结点在发现者的右子树的左边。(右左旋转)

转载于:https://www.cnblogs.com/acmsummer/p/4222961.html

你可能感兴趣的文章
10.34 linux系统日志 10.35 screen工具
查看>>
02、redis如何通过读写分离来承载读请求QPS超过10万+?
查看>>
Qt之二维绘图:QGraphicsScene与QGraphicsView的关系
查看>>
vi命令详解
查看>>
qtcreator 界面启动
查看>>
模块打包
查看>>
lombok的使用和原理
查看>>
浏览器异步队列执行优先级
查看>>
maven web project in intellij
查看>>
OSChina 娱乐弹弹弹——将程序猿表白方式进行到底!
查看>>
OSChina 周四乱弹 —— 人生处处是深坑
查看>>
OSChina 周日乱弹 —— 如何处理学生早恋
查看>>
OSChina 周日乱弹 ——什么姑娘是女!王!大!人!
查看>>
OSChina 周二乱弹 —— 以后我偷小鱼干养你
查看>>
Limu:JavaScript的那些书
查看>>
自定义线程---无界队列作为承装任务
查看>>
Scala 学习笔记
查看>>
Ipython的 Debug 函数
查看>>
基于虹软sdk,java实现人脸识别(demo)
查看>>
Android模拟器入门
查看>>