《大话数据结构笔记》--二叉树的定义及性质

文章目录

      • 二叉树特点
      • 二叉树的5种基本形态
      • 特殊二叉树
        • 斜树
        • 满二叉树
        • 完全二叉树
      • 二叉树的性质
        • 性质1
        • 性质2
        • 性质3
        • 性质4
        • 性质5

定义 : 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集合(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成

二叉树特点

  • 每个结点最多有两棵子树,所以二叉树不存在度大于2的结点
  • 左子树和右子树是有顺序的,次序不能任意颠倒
  • 即使树中某结点只有一棵子树,也要区分它为左子树还是右子树

二叉树的5种基本形态

  • 空二叉树
  • 只有一个根结点
  • 根结点只有左子树
  • 根结点只有右子树
  • 根结点既有左子树又有右子树

思考:如果是有3个结点的树,有几种形态?如果是有3个结点的二叉树,考虑下,又有几种形态?,列出如下图
《大话数据结构笔记》--二叉树的定义及性质_第1张图片
三个结点的树只有两种情况,即上图树1和后四种中的任一种(后四种等价)
但对于二叉树,由于区分左右,那么三个结点的树有5种形态,后四种分别代表不同的二叉树。

特殊二叉树

斜树

所有的结点都只有左子树的二叉树叫左斜树,所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树。

满二叉树

在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层,这样的二叉树称为满二叉树

满二叉树的特点:

  1. 叶子只能出现在最下一层
  2. 非叶子结点的度一定是2
  3. 在同样深度的二叉树中,满二叉树的结点个数最多,叶子最多

完全二叉树

对一棵具有n个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树,如图
《大话数据结构笔记》--二叉树的定义及性质_第2张图片
完全二叉树的性质

  1. 叶子结点只能出现在最下两层
  2. 最下层的叶子一定集中在左边连续位置
  3. 倒数第二层,若有叶子结点,一定都在右边连续位置
  4. 如果结点的度为1,则该结点只有左孩子
  5. 同样结点数的二叉树,完全二叉树的深度最小

二叉树的性质

性质1

在二叉树的第i层上至多有 2 i − 1 2^{i-1} 2i1个结点(i>=1),应用数学归纳法可以验证

性质2

深度为k的二叉树至多有KaTeX parse error: Expected '}', got 'EOF' at end of input: {2^{k-1}个结点

性质3

对任何一棵二叉树T,如果其终端结点数(叶子结点数)为 n 0 {n_0} n0,度为2的结点数为 n 2 {n_2} n2,则 n 0 = n 2 + 1 {n_0=n_2+1} n0=n2+1

《大话数据结构笔记》--二叉树的定义及性质_第3张图片
一棵二叉树,除了叶子结点外,剩下的就是度为1或2的结点数了,我们设 n 1 n_1 n1为度是1的结点数, n 0 n_0 n0 为叶子结点数, n 2 n_2 n2为度是2的结点数,则 T = n 0 + n 1 + n 2 T=n_0+n_1+n_2 T=n0+n1+n2.
上图中,结点数是10,它是由A, B, C, D度为2的结点,F, G, H, I, J度为0的叶子结点和E度为1的结点组成,总和为4+5+1=10, 总分支线为 4 ∗ 2 + 1 = 9 4*2+1=9 42+1=9,表达式为 分 支 线 总 数 = n − 1 = n 1 + 2 n 2 分支线总数=n-1=n_1+2n_2 线=n1=n1+2n2, 结合前面的 n = n 1 + n 2 + n 3 n=n_1+n_2+n_3 n=n1+n2+n3,可推导出 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1

性质4

具有n个结点的完全二叉树的深度为 [ l o g 2 n ] + 1 [log_2n]+1 [log2n]+1([x]表示不大于x的最大整数)

由满二叉树的定义,深度为k的满二叉树的结点数n一定是 2 k − 1 2^k-1 2k1,完全二叉树的结点数一定少于等于同样深度的满二叉树的结点数 2 k − 1 2^k-1 2k1,但一定多于 2 k − 1 − 1 2^{k-1}-1 2k11(完全二叉树的深度一定大于k-1),那么完全二叉树结点数n的不等式有 2 k − 1 − 1 < n < = 2 k − 1 2^{k-1}-1< n <=2^k-1 2k11<n<=2k1,那么有 2 k − 1 < = n < 2 k 2^{k-1}<=n<2^k 2k1<=n<2k,不等式两边取对数,得到 k − 1 < = l o g 2 n < k k-1<=log_2nk1<=log2n<k,k为整数, 则有 k = [ l o g 2 n ] + 1 k=[log_2n]+1 k=[log2n]+1

性质5

如果对一棵有n个结点的完全二叉树的结点按层序号编号,对任一结点 i i i,有:
1.如果 i = 1 i=1 i=1, 则结点i是二叉树的根,无双亲;如果 i > 1 i>1 i>1,则其双亲结点是[i/2]
2. 如果 2 i > n 2i>n 2i>n,则结点 i i i无左孩子,否则其左孩子是结点 2 i 2i 2i
3. 如果 2 i + 1 > n 2i+1>n 2i+1>n,则结点 i i i无右孩子,否则其右孩子的结点 2 i + 1 2i+1 2i+1

你可能感兴趣的:(数据结构与算法)