初识树结构

1.定义

树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
—来源:百度百科

树是指由n(n>=0)个结点组成的有穷集合D与D上的关系的集合R构成的结构,一般使用T表示
树需要满足以下的条件:
1.当n=0时,该结点集合为空,被称为空树
2.再任意的非空树中,有且仅有一个根结点root
3.当n>1时,除根结点以外的其余结点可以分为m(m>0)个不相交的子集D_1,D_2,…D_m,其中每一个子集D_i本身都是一棵树,是根结点root的子树
在这里插入图片描述
树的定义是一个递归定义
因为树是由根结点和子树构成的,而每一个子树又都是一棵树

2.树的表示

由树的定义可知,树结构在形式上最主要的特点是分层特点和具有一定的排列顺序
树的表示需要体现树的特点

2.1树形表示

像一棵自然界中倒置的树,用圆圈表示结点,结点与结点之间的关系用连线表示
在这里插入图片描述

2.2文氏图表示

集合图示 表示包含层次关系
在这里插入图片描述

3.基本术语

3.1子结点/父结点

某个结点的子树的根结点视为该结点的子结点,而该结点是其子结点的父结点

3.2结点的度

结点所拥有的子树的数目为结点的度
直观地表示就是树结构中每个结点的直接子结点个数

3.3.树的度

树中各个结点度的最大值为树的度

3.4分支结点

度不为0的结点称为分支结点或普通结点

3.5结点的层次

从树的根结点开始,根结点为第1层,根结点的子结点为第2层……第i层结点的子结点为第i+1层

3.6树的深度

树中结点的最大层次树被定义为该树的深度或高度

3.7森林

n(n>=0)棵互不相交的树的集合

3.8叶子结点

度为0的结点为叶子结点或终端结点,叶子结点无子结点

4.树的性质

性质1

非空树的结点总书等于树中所有结点的度数之和再加1

性质2

深度为k的非空k叉树(树的度为k)的第i层最多由k^(i-1)个结点

性质3

深度为h的k叉树(树的度为k)最多有(k^h-1)/(k-1)个结点

性质4

具有n个结点的k叉树的最小深度为[log_k (n(k-1)+1)]

5.树的基本操作

  1. 构建一棵树—初始化操作
  2. 判断树是否为空
  3. 返回一棵树的根结点
  4. 求指定结点的父结点
  5. 求指定结点的所有子结点
  6. 求指定结点(非叶子结点)的第i个子结点
  7. 求一棵树的高度
  8. 为指定结点添加子结点
  9. 删除指定结点的第i棵子树
  10. 将一棵以S为根结点的子树插入到以T为根结点的树中,作为结点m的第i棵子树
  11. 对一棵树进行遍历,按照先/后/中序依次输出所有结点
  12. 求树中指定结点的兄弟结点
  13. 求某个结点的位置

参考书籍《妙趣横生的算法(C++语言实现)》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值