二叉树的种类
二叉树:二叉树是每个节点最多有两个子树的树结构。
完全二叉树:除最后一层外,每一层上的节点数量均达到了最大值,在最后一层上只缺少右边的若干节点。
满二叉树:除最后一层无任何子节点外,每一层上的所有节点都有两个子节点的二叉树。
二叉搜索树(二叉排序树、二叉查找树):左子树<根节点<右子树,它的左子树不空,则左子树上的所有节点的值均小于根节点的值;若它的右子树不空,则右子树上的所有的节点的值均大于根节点的值。左右子树分别为二叉排序树。当然也可以是一棵空树。
平衡二叉树:有几种实现方式:红黑树、AVL树。
它是一个空树或它的左右两个子树的高度差的绝对值不超过1。
B树类型(B-树、B+树):一种平衡的二叉树。
B-树:叶子节点之间无指针相连。
B+树:叶子节点之间有指针相连。
说一下你对红黑树和平衡二叉树的区别?(面试有被问到)
红黑树本质上是一种平衡的二叉查找树,只不过,在二叉查找树的基础上引入了额外的规则,以保持平衡。这些规则包括:
- 每个节点要么是红色,要么是黑色。
- 根节点永远是黑色的。
- 所有的叶子节点都是黑色的。
- 每个红色节点的两个子节点一定都是黑色的。
- 从任意节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。
红黑树自平衡调整包含两个步骤,一个是变色,一个是旋转。
在实现复杂度方面,红黑树的实现相对简单,每次插入最多只需要三次旋转就能达到平衡,而AVL树的实现更为复杂,每次插入后可能需要多次旋转来维持平衡。
对于普通的二叉查找树(非平衡二叉查找树)在极端情况下可能会退还为链表的结构。
浙公网安备 33010602011771号