
此处层级是从根路径到节点(包括根和节点)的路径上的节点数。根级别为 0。通过上面的图我们可以看到,对于root结点来说,level = 0,结点的数目为2^0 = 1。因此,我们假设level = l上的最大结点数为2^l,而对于二叉树来说每个结点最多拥有2个子结点,则下一个level可以推导出最多可以拥有2倍的结点数,即2 * 2^l。
这里数的高度是指根到叶子结点路径上的最大结点数。只有单个结点的数的高度为0。如果所有level上都存在最大结点数,则整棵树具有最大结点数。因此树高度为h的二叉树中的最大结点数为1 + 2 + 4 + ... + 2^h,我们可以推导出高度为h的树的总结点数为2^(h+1)-1。
满二叉树是指所有的结点拥有0个或者2个子结点的二叉树。或者说满二叉树中除了叶子结点没有子结点外其它结点都拥有2个子结点。例如:
18/ \15 30/ \ \40 50 100 4018/ \15 20/ \40 50/ \30 5018/ \40 30/ \100 40
完整二叉树是指树的所有层都填满的结点,除了最后一层可以不填满,但是也必须是所有的左结点都已填满。例如:
18/ \15 30/ \ \40 50 100 4018/ \15 30/ \ \40 50 100 40/ \8 7 9
完整二叉树一个典型的例子就是二叉堆。
完美二叉树是指树的所有内部结点都有2个子结点,并且所有的叶子结点都在同一层。例如:
18/ \15 30/ \ \40 50 100 4018/ \15 30
根据上面的计算公式,高度为h的完美二叉树拥有2^(h+1)-1个结点。
二叉查找树,也称二叉搜索树、有序二叉树、排序二叉树,是指一棵空树或者具有以下特性的二叉树:
左子树上所有节点的值均小于它的根节点的值; 右子树上所有节点的值均大于它的根节点的值; 以此类推:左、右子树也分别为二叉查找树。
118/ \40 130/ \ / \24 50 122 154/ \ /8 32 41
退化树是指树的每个内部结点只有1个子结点。你可以把退化树看作是链表,其各种操作的时间复杂度和链表一致,但是空间复杂度要略高,因为要多维护一个节点指针。例如:
10/20\30\40
文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




