{ id : 'top-progress-bar', // 请勿修改该值 color : '#77b6ff', height : '2px', duration: 0.2, }

二叉树的性质

二叉树定义:

二叉树是一棵树,且每个节点都不能有多于两个的儿子,且二叉树的子树有左右之分,次序不能颠倒。

二叉树的性质

  • 在二叉树中的第\(i\)层上至多有\(2^{(i-1)}\)个结点\((i>=1)\).
  • 深度为\(k\)的二叉树至多有\(2^k - 1\)个节点\((k>=1)\)
  • 对任何一棵二叉树T,如果其叶结点数目为\(n_0\),度为2的节点数目为\(n_2\),则\(n_0=n_2+1\)
    满二叉树:深度为k且具有\(2^k-1\)个结点的二叉树。即满二叉树中的每一层上的结点数都是最大的结点数。
    完全二叉树:深度为k具有n个结点的二叉树,当且仅当每一个结点与深度为k的满二叉树中的编号从1至n的结点一一对应。

具有n个节点的完全二叉树的深度为\(log_{2\times n} + 1\)

  • 性质1:二叉树第i层上的结点数目最多为 \(2^{i-1} (i≥1)\)

证明:下面用"数学归纳法"进行证明:
1. 当\(i=1\)时,第i层的节点数目为\(2^{i-1}=2^{0}=1\)。因为第1层上只有一个根结点,所以命题成立。
2. 假设当\(i>1\),第i层的节点数目为\(2^{i-1}\)。这个是根据\(1\)推断出来的!
下面根据这个假设,推断出"第\((i+1)\)层的节点数目为\(2^{i}\)"即可。
由于二叉树的每个结点至多有两个孩子,故"第\((i+1)\)层上的结点数目" 最多是 "第\(i\)层的结点数目的2倍"。即,第\((i+1)\)层上的结点数目最大值\(=2×2^{i-1}=2^{i}\)
故假设成立,原命题得证!

  • 性质2:深度为k的二叉树至多有\(2^{k}-1\)个结点\((k≥1)\)

证明:在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知,深度为k的二叉树的结点数至多为:
\(20+21+…+2\times k-1=2\times k-1\)
故原命题得证!

  • 性质3:包含\(n\)个结点的二叉树的高度至少为\(log_2{(n+1)}\)

证明:根据"性质2"可知,高度为\(h\)的二叉树最多有\(2^{h}–1\)个结点。反之,对于包含\(n\)个节点的二叉树的高度至少为\(log_2(n+1)\)

  • 性质4:在任意一棵二叉树中,若终端结点的个数为\(n_0\),度为2的结点数为\(n_2\),则\(n_0=n_2+1\)

证明:因为二叉树中所有结点的度数均不大于\(2\),所以\(结点总数(记为n)="0度结点数(n_0)" + "1度结点数(n_1)" + "2度结点数(n_2)\)"。由此,得到等式一。
1. (等式一)\(n=n_0+n_1+n_2\)
  另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:\(n_1+2\times n_2\)。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。
2.(等式二) \(n=n_1+2\times n_2+1\)
由(等式一)和(等式二)计算得到:\(n_0=n_2+1\)。原命题得证!

posted @ 2021-04-14 16:56  星空Dreamer  阅读(456)  评论(0)    收藏  举报