6、查找树与平衡树

查找树:又叫做搜索树、排序树,它规定了内部的结构是有规律的。

平衡树:是查找树,且保证左右子树层数相当。


 

1、二叉查找树

它满足左子树小于根,右子树大于根,且每一个子树都是二叉查找树。

例如:

 

 对其进行中序遍历会得到有序集合:

  第一个:2 3 4 6 7 9 13 15 17 18 20

  第二个:1 3 4 6 7 8 10 13 14


 

2、平衡二叉树

 

平衡树也是查找树,是有序的,不过是为了避免查找树变成单链表,将其左右子树的深度做以平衡。

一般说平衡二叉树,指的是使用AVL算法实现平衡二叉树。

规定:

  左右子树高度差不大于1。


 

3、红黑树(平衡二叉树)

也是一种平衡二叉树。它给每个节点添加了颜色属性。

规定:

  1、根节点是黑色。

  2、红节点的子节点必须为黑色节点。

  3、空节点必须为黑色。

  4、从一个节点到该节点的子孙节点,的所有路径上包含相同数目的黑节点。

使用:

  Java中的TreeSet、TreeMap。


 

4、B树(平衡多叉树)

它是平衡树,但是支持多叉,降低树的深度。

目的:

  为了解决文件系统的文件查找。

 如下图:

  1、根节点的左子树P1存储了小于17的数据。

  2、根节点的中间子树P2存储了(17-35)的数据。

  3、根节点的右子树P3存储了大于35的数据。

 


5、B+树

所有数据都放在底层,上层只存放索引。

 

 使用:

  数据库中的索引默认就是使用B+树实现的。


 

6、B*树

在B+树的基础上,给非根节点和非叶子节点添加了指向兄弟节点的指针。

 

posted @ 2022-12-08 15:53  在博客做笔记的路人甲  阅读(84)  评论(0编辑  收藏  举报