数据结构之树的定义及操作

树的定义

树是一种非线性的数据结构
树是由 n ( n ≥0 ) 个结点组成的有限集合
如果 n = 0,称为空树(如下图a);
如果 n > 0,则:

1.有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱;

2. 除根以外的其它结点划分为 m (m ≥0)0) 个互不相交的有限集合T0,T1,,Tm-1,每个集合又是一棵树,并且称之为根的子树(subTree)

树家族中的概念(基本术语):

树的结点包含一个数据及若干指向子树的分支,结点拥有的子树数称为结点的度。度为0的结点称为叶结点终端节点,度不为0的结点称为分支结点非终端节点。除根节点外,分支节点也称为内部节点。树的度定义为所有结点中的度的最大值。


结点的直接后继(节点的子树的根)称为该结点的孩子,相应的,该结点称为孩子的双亲。结点的孩子的孩子的……称为该结点的子孙。相应的,该结点称为子孙的祖先,同一个双亲的孩子之间互称兄弟。

结点的层次:根为第1层,根的孩子为第2层,……。双亲在同一层的结点互为堂兄弟(如上图中的F和G)。树中结点的最大层次称为树的深度高度。

如果树中结点的各子树从左向右是有次序的,子树间不能互换位置,则称该树为有序树,否则为无序树。

森林是由 n ( n ≥0 ) 棵互不相交的树组成的集合。对于树中每个结点而言,其子树的集合即为森林。就逻辑结构而言,任何一棵树是一个二元组Tree = (root, F),其中,root是数据元素,称做树的根节点;F是m(m>=0)棵树的森林,F=(T1,T2,…Tm),其中Ti = (ri,Fi)称做根root的第i棵子树;当m0时,在树根和其子树森林之间存在下列关系:RF = {<root,ri>|i = 1,2,…,m,m>0}。这个定义将有助于得到森林和树与二叉树之间转换的递归定义。

 

 树的一些常用操作

1.    创建树;

2.     销毁树;

3.     清空树;

4.     插入结点;

5.     删除结点;

6.     获取结点;

7.     获取根结点;

8.     获取树的结点数;

9.     获取树的高度;

10.  获取树的度。

树在程序中表现为一种特殊的数据类型。

树的操作在程序中的表现为一组函数。

本节简单讲一下树的定义及操作方式,下一节将讲一下这些操作的C实现方式。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值