当前位置 : 主页 > 编程语言 > c语言 >

【数据结构】树

来源:互联网 收集:自由互联 发布时间:2023-09-07
树的定义和基本术语 树是一种层级结构,对其中的每一个结点 都只能有一个前驱,但可能有多个后继。 树是n个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1) 有且仅有一

树的定义和基本术语

【数据结构】树_数据结构

【数据结构】树_子树_02

树是一种层级结构,对其中的每一个结点都只能有一个前驱,但可能有多个后继。

树是n个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根的结点。(2)当n>1时,其余结点可分为m个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树

树的定义其实就是在学习栈时提到的递归的方法。也就是在树的定义之中还用到了树的概念,这是一种比较新的定义方法。如图子树T1和子树T2就是结点A的子树。

【数据结构】树_数据结构_03

对于树的定义还需要注意:

1.n>0 时根节点是唯一的,不可能存在多个根结点,这跟现实中的大树不一样,现实中的大树有很多根须,那是真实的树,数据结构中的树是只能有一个根结点。

2.m>0时,子树的个数没有限制,但它们不一定是互不相交的,像下图就不符合树的定义,因为它们都有相交的子树。

【数据结构】树_结点_04

结点分类

树的结点包含一个数据元素及若干指向子树的分支结点拥有的子树数称为结点的。度为0的结点称为叶结点或终端结点;度不为0的结点称为非终端结点或分支结点。除了根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值,如图所示,因为这棵树结点的度的最大值是结点D的度,为3,所以树的度也为3。度不等于0的分支结点称为非终端结点,根结点以外的分支结点称为内部结点;度等于0的结点称为叶子或者终端结点。

【数据结构】树_结点_05

结点间关系

结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。同一个双亲的孩子之间互称兄弟,结点的祖先是从根到该结点所经过分支上的所有结点。所以对于H来说,D、B、A都是它的祖先。反之,以某结点为根的子树中的任一结点都称为该结点的子孙。B的子孙有D、G、H、I。

【数据结构】树_数据结构_06

树的其他相关概念

结点的层次是从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第1层,则其子树的根就在第i+1层。其双亲在同一层的结点互为堂兄弟。树中结点的最大层次称为树的深度或高度。

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

森林:是m(m>=0)棵互不相交的树的集合。把根结点删除树就变成了森林。一棵树可以看成是一个特殊的森林。给森林中的各子树加上一个双亲结点,森林就变成了树。森林不一定是树,树不一定是森林

树的五种表示方法

图形表示法 嵌套表示法 广义表表示法 凹入表示法 左孩子——右兄弟表示法

树结构和线性结构的比较

【数据结构】树_子树_07

上一篇:C语言中的灵魂-指针
下一篇:没有了
网友评论