java tree degree_树-概念和分类 - 老弟,来啦? - OSCHINA - 中文开源技术交流社区

树的定义

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

每个结点有零个或多个子结点;

每一个子结点只有一个父结点;

没有前驱的结点为根结点;

除了根结点外,每个子结点可以分为m个不相交的子树;

树的表示

树形图

集合包含关系文氏图法

凹入表表示法

广义表表示法

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

树的基本术语

结点的度(Degree)

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

孩子(Child)和双亲(Parents)

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

祖先(Ancestor)和子孙(Descendant)

路径(path) 若树中存在一个结点序列k1,k2,…,ki,使得ki是ki+1的双亲(1≤i

祖先(Ancestor)和子孙(Descendant) 若树中结点k到ks存在一条路径,则称k是ks的祖先(Ancestor),ks是k的子孙(Descendant)。 一个结点的祖先是从根结点到该结点路径上所经过的所有结点,而一个结点的子孙则是以该结点为根的子树中的所有结点。 约定:结点k的祖先和子孙不包含结点k本身。

结点的层数(Level)和树的高度(Height)

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

有序树(OrderedTree)和无序树(UnoderedTree)

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

森林(Forest)

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

你可能感兴趣的:(java,tree,degree)