二叉树
- 只有一个根节点
- 每个根节点至多有两个子节点
![](https://img.haomeiwen.com/i6019040/acf529c2e130d597.png)
查找二叉树
- 满足二叉树全部定义
- 当前节点的任意左子节点必须小于自身,任意右子节点需大于自身
![](https://img.haomeiwen.com/i6019040/d7a3bccf1cda9620.png)
平衡查找二叉树(AVL)
- 满足查找二叉树的全部定义
- 左右子树高度差不得超过1
- 不满足第二点时进行旋转
![](https://img.haomeiwen.com/i6019040/be94c3545c8924ce.png)
旋转类型
左旋
![](https://img.haomeiwen.com/i6019040/e912b458aaf6f779.png)
右旋
![](https://img.haomeiwen.com/i6019040/19bb8a102744835d.png)
失衡情况
左左失衡 (右旋)
参考右旋
左右失衡 (先左旋 再右旋)
![](https://img.haomeiwen.com/i6019040/880098bacd3cb7b0.png)
右右失衡(左旋)
参考左旋图
右左失衡(先右旋 再左旋)
![](https://img.haomeiwen.com/i6019040/70f225001ed18fe0.png)
红黑树
- 弱平衡查找二叉树(不要求满足高度差<=1)
- 每个节点或者是黑色,或者是红色
- 根节点是黑色。
- 每个叶子节点是黑色,叶子节点是NIL。
- 如果一个节点是红色的,则它的子节点必须是黑色的。
- 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
网友评论