什么是树?
答:树是n个结点的集合。
什么是森林?
答:n棵互不相交的树组成的集合叫森林。
结点的度指什么?
答:结点拥有的子树的数量。
树的高度(深度)指什么?
答:树中结点的最大层次。
树的平均深度是多少?
答:O(logN)。
什么是二叉树?
答:二叉树是一棵树,其每个结点的子结点数最多为2。
什么是二叉查找树(ADT)?
答:二叉查找树是一棵树,其左子树中所有结点的值都小于根结点,其右子树中所有结点的值都大于根结点。
二叉查找树就保证了元素的有序性。
什么是平衡二叉查找树(AVL)?
答:AVL是带有平衡条件的二叉查找树。其每个结点的左子树和右子树的高度差最多为1。
平衡二叉查找树(AVL)在二叉查找树的基础上加平衡条件,是为了防止在查找的时候,二叉查找树的层次过深。
当向AVL树中插入或删除元素时,可能会破坏平衡条件,解决办法是旋转。旋转分四种情况:LL型平衡旋转、RR型平衡旋转、LR型平衡旋转、RL型平衡旋转,这四种旋转又可概括为两种:单旋转和双旋转。假如在向AVL树中插入或删除元素时,破坏了AVL的平衡性,就需要通过旋转来调整,使之重新平衡。
什么是红黑树?
答:首先,红黑树是二叉查找树,在二叉查找树的基础上,增加了一些特性。
二叉查找树按照一定顺序存储元素,这使得在查找元素时变得方便,其平均深度为O(logN)。但是二叉查找树的问题在于,其性能严重地依赖于输入,而输入却是随机的。如果情况不是这样,则运行时间会显著增加,二叉查找树会成为昂贵的链表。
平衡二叉查找树(AVL)就是用来解决二叉查找树的问题的,它要求所有结点的左子树和右子树的高度差最多为1,这就保证了树不至于太深。但是平衡二叉查找树(AVL)对平衡的要求太严苛,以至于插入和删除操作时,非常容易破坏平衡条件,会引起频繁的平衡调整,导致效率下降。
红黑树就是一种折中选择,它既能起到平衡的作用,使二叉查找树的深度不至于太深,又不像平衡二叉查找树(AVL)那样严苛,它追求的是二叉查找树的局部平衡,就算在插入和删除操作,也不会那么容易就破坏掉红黑树的平衡条件,效率较AVL来说,比较高。
红黑树是具有着色性质的二叉查找树,其特性如下:
答:1.每一个节点要么着成红色,要么着成黑色。
2.根是黑色的。
3.如果一个节点是红色,那么它的子节点必须是黑色的。
4.从一个节点到一个null引用的每一条路径必须包含相同数目的黑色节点。