算法树概念
满二叉树=>完全二叉树
二叉查找树=>平衡二叉查找树(AVL)=>红黑树
B-Tree(B树) => B+Tree(B+树)
满二叉树
除了叶子节点外每一个节点都有两个子节点,且所有叶子节点都在二叉树的同一高度上。
完全二叉树
如果二叉树中除去底层节点后为满二叉树,且底层节点依次从左到右分布,则此二叉树被称为完全二叉树。
满二叉树一定是完全二叉树
二叉查找树(Binary Search Tree - BST,又称二叉排序树、二叉搜索树)
二叉查找树根节点的值大于其左子树中任意一个节点的值,小于其右子树中任意一节点的值,且该规则适用于树中的每一个节点。
二叉平衡树AVL树的特点
- 具有二叉查找树的特点(左子树任一节点小于父节点,右子树任一节点大于父节点),任何一个节点的左子树与右子树都是平衡二叉树
- 任一节点的左右子树高度差小于1,即平衡因子为范围为[-1,1] 如上左图根节点平衡因子=1,为AVL树;右图根节点平衡因子=2,固非AVL树,只是BST。
平衡二叉树一定是二叉查找树
B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树(B树是一颗多路平衡查找树)
它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.
它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.
B+树是B-树的变体,也是一种多路搜索树, 它与 B- 树的不同之处在于:
- 所有关键字存储在叶子节点出现,内部节点(非叶子节点并不存储真正的 data)
- 为所有叶子结点增加了一个链指针
B-树每个节点都存储数据, B+树只有叶子节点才存储数据,内节点不存储数据,即底层节点才存储数据
参考链接:
https://cloud.tencent.com/developer/article/1669288