7. 树-数据结构入门(c语言实现)

目录

树的定义

树的表示方法

树的基本术语

结点(node)

结点的度(degree)

叶子(leaf)

孩子(child)

双亲(parents)

兄弟(sibling)

树的度

结点的层次(level)

深度(depth)

森林(forest)

孩子节点、双亲节点和兄弟节点

子孙节点和祖先节点

节点的层次和树的高度

有序树和无序树

树的存储

双亲存储结构(双亲表示法)

孩子链存储结构(孩子链表表示法)

孩子兄弟链存储结构(孩子兄弟表示法)


        树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树在计算机领域中得到广泛应用,尤二叉树最为常用。如在操作系统中,用树来表示文件目录的组织结构。

树的定义

树(Tree)是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。它或为空树(n= 0); 或为非空树。

把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。对于非空树T:

(1)有且仅有一个称之为根的结点,根节点没有前驱结点。

(2)除根结点以外的其余结点可分为 m(m>0)个互不相交的有限集Ti , T2 , …Tm,其中每一个集合本身又是一棵树,并且称为根的子树。

特点:

当n>0时,树中至少有一个结点——根;

树中各子树是互不相交的集合。

树的结构定义是一个递归的定义,即在树的定义中又用到树的定义,它道出了树的固有特性。

树的表示方法

树形表示方法:

嵌套集合表示法(文氏图表示法)

凹入表表示法(线段的伸缩关系来表示)

广义表表示法(括号表示法)

树的基本术语

结点(node)

表示树中的元素,包括数据项及若干指向其子树的分支

结点的度(degree)

结点拥有的子树数

叶子(leaf)

度为0的结点

孩子(child)

结点子树的根称为该结点的孩子

双亲(parents)

孩子结点的上层结点叫该结点的双亲

兄弟(sibling)

同一双亲的孩子

树的度

一棵树中最大的结点度数

结点的层次(level)

从根结点算起,根为第一层,它的孩子为第二层……

深度(depth)

树中结点的最大层次数

森林(forest)

森林n(n>0)个互不相交的树的集合称为森林。只要把树的根节点删去就成了森林。

反之,只要给n棵独立的树加上一个节点,并把这n棵树作为该节点的子树,则森林就变成了一棵树。

独木也成林!!!

孩子节点、双亲节点和兄弟节点

在一棵树中,每个节点的直接后继,被称作该节点的孩子节点。相应地,该节点被称为孩子节点的双亲节点。

具有同一双亲的孩子节点互为兄弟节点。

子孙节点和祖先节点

在一棵树中,一个节点的所有子树中的节点称为该节点的子孙节点。

从根节点到达一个节点的路径上经过的所有节点被称为该节点的祖先节点。

节点的层次和树的高度

节点的层次从树根开始定义,根节点为第一层,它的孩子节点为第2层,依次类推,一个节点所在的层次为其双亲节点所在的层次加1.

树中节点的最大层次称为树的高度(或树的深度)。

有序树和无序树

若树中各节点的子树是按照一定的次序从左到右安排的,且相对次序是不能随意变换的,则称为有序树,否则称为无序树。

树的存储

双亲存储结构(双亲表示法)

孩子链存储结构(孩子链表表示法)

孩子兄弟链存储结构(孩子兄弟表示法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值