二叉树
- 每个结点最多有两棵子树,所以,二叉树中不存在度大于2的结点。没有子树,或者只有一棵子树都是可以的。
- 左子树、右子树是有顺序的,次序不能任意颠倒。
- 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。
二叉树的五种基本形态
- 空二叉树
- 只有一个根节点
- 根节点只有左子树
- 根结点只有右子树
- 根节点既有左子树,又有右子树
三个结点的二叉树有几种形态?5种
满二叉树
- 叶子结点只能出现在最下一层
- 在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。
完全二叉树
对一棵有n个结点的二叉树按照层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点,在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。
二叉树性质1:
- 深度为 k k k 的二叉树至多有 2 k − 1 2^k-1 2k−1个结点
- 在第 i i i 层上至多有 2 i − 1 个 结 点 2^{i-1}个结点 2i−1个结点
- 对任何一棵二叉树,如果其终端结点数(也就是度为0的结点,即叶子结点)为 n 0 n_0 n0 ,度为 2 的结点数为 n 2 n_2 n2,则 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1
推导:
一棵二叉树,树的结点可以分为三类,结点度为2,度为1,度为0;
分别记其数目为 n 2 n_2 n2, n 1 n_1 n1, n 0 n_0 n0,
则这棵二叉树的 结 点 总 数 n = n 0 + n 1 + n 2 结点总数 n=n_0+n_1+n_2 结点总数n=n0+n1+n2
又,不管一个结点它的度是2,1,或者0,换句话说,不管这个结点是出去两个分支,还是出去一个分支,或者说不出去分支,我们发现,在每一个结点上都会有一个分支进入,但,根结点除外;
再通俗点说就是,每个结点上都会挂有一个分支,但是根结点除外
所以,这棵树中的总分支数目,等于这棵树中的总结点数目减1
总 分 支 数 = n − 1 总分支数 = n-1 总分支数=n−1
总分支数还可以这样来算,在这棵二叉树中,度为2的结点会出去两个分支,度为1的结点会出去1个,所以, 总 分 支 数 = 2 × n 2 + 1 × n 1 总分支数=2\times n_2+1\times n_1 总分支数=2×n2+1×n1
所以, 总 分 支 数 = n − 1 = 2 × n 2 + 1 × n 1 总分支数 = n-1=2\times n_2+1\times n_1 总分支数=n−1=2×n2+1×n1
把 n = n 0 + n 1 + n 2 n=n_0+n_1+n_2 n=n0+n1+n2代入,有,
( n 0 + n 1 + n 2 ) − 1 = 2 × n 2 + 1 × n 1 (n_0+n_1+n_2)-1=2\times n_2+1\times n_1 (n0+n1+n2)−1=2×n2+1×n1
整理, n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1
- 具有n个结点的完全二叉树的深度为
⌊
l
o
g
2
n
⌋
+
1
\lfloor log_2n\rfloor+1
⌊log2n⌋+1