• 5 树


    1、定义:

    树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。在任意一棵非空树中:

    (1) 有且只有一个特定的称为根(root)的结点;

    (2) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树(Subtree)

    强调两点:

    (1) n>0时,根节点是唯一的,,不可能存在多个根节点;

    (2) m>0时,子树的个数没有限制,但它们一定是是互不相交的。

    2、度:

    结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶节点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根节点之外,分支结点也成为内结点。树的度是内各结点的度的最大值。

    3、结点的层次:

    结点的层次(Level)从根开始定义起,根为第一层,跟的孩子为第二层。树中结点的最大层次称为树的深度(Depth)或高度。

    4、有序树:

    如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。

    5、树的存储结构

    主要有双亲表示法、孩子表示法、孩子兄弟表示法。下面章节将具体进行介绍。

    6、二叉树:

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

    特点:

    (1) 每个结点最多有两棵树,所以二叉树中不存在拟度大于2的结点。注意不是只有两棵子树,而是最多有。没有子树或者由有一棵子树都是可以的。

    (2) 左子树和右子树是有顺序的,次序不能任意颠倒。

    (3) 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。

    性质:

    (1) 在二叉树的第i层上至多有2i-1个结点(i>=1)

    (2) 深度为k的二叉树至多有2k-1个结点(k>=1)

    (3) 对任意一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1

    (4) 具有n个结点的完全二叉树的深度为logn(取整)+1

    (5) 如果对一棵有n个结点的完全二叉树的结点按照层序编号,对任意结点i有:

              ① 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点i/2(取整)

              ② 如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是叶子结点2i

              ③ 如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1

  • 相关阅读:
    python基础-正则2
    python基础-正则1
    python基础-私有变量和方法
    「SCOI2015」小凸玩密室 解题报告
    「JLOI2015」骗我呢 解题报告?
    「JLOI2015」城池攻占 解题报告
    【模板】左偏树(可并堆)
    网络流24题 餐巾计划问题 解题报告
    「JLOI2015」管道连接 解题报告
    [WC2008]游览计划 解题报告
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/9857085.html
Copyright © 2020-2023  润新知