二叉树(Binary Tree)
什么是二叉树(Binary Tree)
每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树的性质
(1)若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0)。
(2)高度为k的二叉树最多有2^(k+1) - 1个结点(k>=-1)。 (空树的高度为-1)
(3)对任何一棵二叉树,如果其叶子结点(度为0)数为m, 度为2的结点数为n, 则m = n + 1。
完美二叉树(Perfect Binary Tree)
-
A Perfect Binary Tree(PBT) is a tree with all leaf nodes at the same depth.
-
All internal nodes have degree 2.
一个深度为k(>=-1)且有2^(k+1) - 1个结点的二叉树称为完美二叉树。 (注: 国内的数据结构教材大多翻译为"满二叉树")
例如:
完全二叉树(Complete Binary Tree)
-
A Complete Binary Tree (CBT) is a binary tree in which every level,
-
except possibly the last, is completely filled, and all nodes
-
are as far left as possible.
换句话说,完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。
例如:
完满二叉树(Full Binary Tree)
A Full Binary Tree (FBT) is a tree in which every node other than the leaves has two children.
换句话说,所有非叶子结点的度都是2。(只要你有孩子,你就必然是有两个孩子。)
注:Full Binary Tree又叫做Strictly Binary Tree。
例如:
完美(Perfect)二叉树 v.s. 完全(Complete)二叉树
(1) 一棵完美(Perfect)二叉树看起来如下
(2) 那么,将编号为15, 14, ..., 9的叶子结点从右到左依次拿掉或者拿掉部分,则是一棵完全(Complete)二叉树,
例如,将上图中的编号为15, 14, 13, 12, 11叶子结点都拿掉(从右到左的顺序)
(3) 下图就不是一棵完全(Complete)二叉树,【图2.6.3】,
如果吧k从11位置放到5E的右子节点处,就是完全二叉树了。