zoukankan      html  css  js  c++  java
  • 二叉树的定义和性质

    二叉树T:n(n>=0)个节点的有限集。

    n=0,称它空树。

    当n>0时,有且仅有一个特定的结点,称为树的根(root)。

    当n>1时,它由一个根节点和两棵分别称为左子树TL和右子树Tr的互不相交的二叉树构成。

    二叉树特点:

    每个节点至多有二棵子树。

    二叉树的子树有左、右之分,且其次序不能任意颠倒。

    五种形态:空、只有一个结点、只有左子树、只有右子树、有左右子树

    满二叉树:结点最满的二叉树

    完全二叉树:最后一层的最少一个结点,只能缺少右子树、其余层是满二叉树

    性质1:在二叉树的第i层上至多有2(i-1)次方个节点(i>=1)。

    证明(归纳法证明):

    当i=1时,只有一个根结点,2º=1 成立

    假设对所有i=n-1命题成立,即第n-1层上至多有2(n-2)次方个节点。

    那么,对i=n,由于二叉树每个节点的度至多为2,

    因此,第n层上最大结点数是第n-1层的2倍,即

    2*2(n-2)   =  2 (n-1)

    综上,命题得证。

    性质2:深度为n的二叉树至多有2ⁿ-1个结点(n>=1)。

    深度为n的二叉树拥有结点数最多的情况,实质上就是每层上的结点都是满的情况,也就是二叉树是一个满二叉树。

    性质3:对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 +1

    把二叉树所有的结点分为3种类型,分别是没有孩子的结点,即终端结点、有1个孩子的结点和两个孩子的结点,分别记为n0,n1和n2。

    对二叉树从下向上看,边的总数为:

    n0 +n1 +n2 -1

    对二叉树从上向下看,边的总数为:

    n1 + 2*n2

    因此:n0 +n1 +n2-1 = n1 +2*n2

    整理即为:n0 = n2 +1

    性质4:具有n个节点的完全二叉树的深度为log₂n +1

    非完全二叉树的左右孩子是随机的、不确定的,结点数与深度之间的关系很难确定,因此,本性质是针对完全二叉树来考虑的。

    证明:假设深度为k,则根据性质2和完全二叉树的定义有

    2(k-1)次方 -1 < n <= 2(k)次方-1,也即,2(k-1)次方 < n <= 2(k)次方

    于是,k-1 < log₂n <= k,整理后为,log₂n < k <= log₂n+1

    因为,k是整数,所以:

    k = log₂n+1

  • 相关阅读:
    腾讯TDW:大型Hadoop集群应用[转载]
    [转]常见分布式系统数据分布解析
    一种基于Storm的可扩展即时数据处理架构思考
    storm
    storm
    精华文章
    Dubbo使用解析及远程服务框架
    职责链实现的apache.chain使用
    设计模式之享元模式
    SVN安装与eclipseSVN插件基本使用
  • 原文地址:https://www.cnblogs.com/privilege/p/11190215.html
Copyright © 2011-2022 走看看