zoukankan      html  css  js  c++  java
  • 树01树的基础知识

    一)树的定义

    是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

    • 每个结点有零个或多个子结点;
    • 每一个子结点只有一个父结点;
    • 没有前驱的结点为根结点;
    • 除了根结点外,每个子结点可以分为m个不相交的子树;

    二)数的表示

    树形图

    集合包含关系文氏图法(下图左)

    凹入表表示法(下图右)

    广义表表示法

    (A(B(E,F(I,J)),C,D(G,H))) 

    三)树的基本术语

    (1) 结点的度(Degree) 
    树中的一个结点拥有的子树数称为该结点的度(Degree)。
    一棵树的度是指该树中结点的最大度数。
    度为零的结点称为叶子(Leaf)或终端结点。
    度不为零的结点称分支结点或非终端结点。
    除根结点之外的分支结点统称为内部结点。
    根结点又称为开始结点。

    (2) 孩子(Child)和双亲(Parents)
    树中某个结点的子树之根称为该结点的孩子(Child)或儿子,相应地,该结点称为孩子的双亲(Parents)或父亲。
    同一个双亲的孩子称为兄弟(Sibling)。

    (3)祖先(Ancestor)和子孙(Descendant)
    ①路径(path)
    若树中存在一个结点序列k1,k2,…,ki,使得ki是ki+1的双亲(1≤i<j),则称该结点序列是从kl到kj的一条路径(Path)或道路。
    路径的长度指路径所经过的边(即连接两个结点的线段)的数目,等于j-1。
    注意:若一个结点序列是路径,则在树的树形图表示中,该结点序列"自上而下"地通过路径上的每条边。
    从树的根结点到树中其余结点均存在一条惟一的路径。
    ②祖先(Ancestor)和子孙(Descendant)
    若树中结点k到ks存在一条路径,则称k是ks的祖先(Ancestor),ks是k的子孙(Descendant)。
    一个结点的祖先是从根结点到该结点路径上所经过的所有结点,而一个结点的子孙则是以该结点为根的子树中的所有结点。
    约定:结点k的祖先和子孙不包含结点k本身。

    (4)结点的层数(Level)和树的高度(Height)
    结点的层数(Level)从根起算:
    根的层数为1
    其余结点的层数等于其双亲结点的层数加1。
    双亲在同一层的结点互为堂兄弟。
    树中结点的最大层数称为树的高度(Height)或深度(Depth)。
    注意,很多文献中将树根的层数定义为0。

    (5)有序树(OrderedTree)和无序树(UnoderedTree)
    若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(OrderedTree);否则称为无序树(UnoderedTree)。
    注意:若不特别指明,一般讨论的树都是有序树。

    (6)森林(Forest)
    森林(Forest)是m(m≥0)棵互不相交的树的集合。
    树和森林的概念相近。删去一棵树的根,就得到一个森林;反之,加上一个结点作树根,森林就变为一棵树。

  • 相关阅读:
    叶问14
    叶问13
    叶问12
    叶问11
    叶问10
    叶问9
    Java三种循环之间的区别
    利用Java对象数组制作简易学生管理系统
    什么叫java方法重载?
    Java编译器的常量优化
  • 原文地址:https://www.cnblogs.com/huangfox/p/2565793.html
Copyright © 2011-2022 走看看