树型结构是一种重要的非线性数据结构。树型结构在客观世界广泛存在,如组织关系可用树来表示。树在计算机领域也有广泛应用,如在编译程序时,可用树来表示源程序的语法结构(语法树)。又如在数据库系统中,使用树型结构存储索引等信息。森林则是零到多棵树的集合。对森林的研究,都是转化为对树的研究。

树的定义

树(Tree)是n(n≥0)个结点的有限集合。在任意一棵非空树中,有以下两个性质:
(1) 有且仅有一个特定的结点,称为根(Root)。
(2) 当n>1时,其余的结点可分为m个互不相交的集合T1,T2,…,Tm,其中每一个集合都是一棵树,并且称为根的子树(Subtree)。
这里以一个具有13个结点的树为例,对树型结构进行简单说明。

对上图的树来说,A是根结点,其余三个集合T1={B,E,F,K,L}T_1=\{B,E,F,K,L\}T1​={B,E,F,K,L},T2={C,G}T_2=\{C,G\}T2​={C,G},T3={D,H,I,J,M}T_3=\{D,H,I,J,M\}T3​={D,H,I,J,M}都是子树,且本身也是一棵树,其他子树可类推。
树的结构定义是一个递归的定义,即在树的定义中又用到树的概念,它道出了树的固有特性。需要说明的是,表示树型结构关系,除了使用树型结构,还有其他结构。如嵌套集合、广义表、凹入表示法等。只是,使用树型结构可以更加直观的刻画树。其他表示方法示例见下图:

树的基本术语

接下来介绍树的一些基本术语,统一描述。
树结点(Tree Node):树中元素的基本单位。包含一个数据元素及若干指向其子树的分支,如上图中的A、B等。而树中唯一没有前驱的结点称为根结点(Root),如上图的A结点。
结点的度(Degree):结点拥有的子树个数。如上图中结点A的度为3,结点L的度为0。而度为0的结点称为叶子结点(Leaf)或终端结点。如上图中,K、L都是叶结点。度不为0的结点称为中间结点或分支结点或非终端结点。
树的度(Tree Degree):树中各结点的度的最大值。如上图中树的度为3。
双亲(Parent)和孩子(Child):把一个树结点的直接前驱(只有一个)称为该结点的双亲;相反的,把一个树结点的所有直接后继(零到多个)称为该结点的孩子。如上图中,结点B是结点A的孩子,结点A是结点B的双亲。兄弟(Sibling):同一双亲的孩子之间称为兄弟。如上图中,结点B、C、D互为兄弟。将这些关系进一步推广,结点的祖先(Ancenstor)就是从根到该结点的所经分支上的所有结点,如上图M的祖先为A、D和H。以某结点为根的子树中的任一结点都称为该结点的子孙(Descendant),如上图B的子孙是E、K、L和F。
树的层次(Level):从根结点算起,根为第一层,根的孩子为第二层,树中任一结点的层次等于它的双亲的层次加1。树中各结点层次的最大值称为**树的深度(Depth)**或高度。例如,上图中的树的深度为4。
有序树(Ordered Tree)和无序树((Unordered Tree)):如果树中结点的各子树可看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中,最左边子树的根称为第一孩子,最右边子树的根称为最后一个孩子。

森林的定义

森林(Forest)是m(m≥0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。由此可以用森林和树的相互递归定义来描述树。但是,一般情况下,都是通过树来描述森林。

参考

《数据结构 严蔚敏 吴伟民 著
https://www.jianshu.com/p/c545c93f2585 数据结构与算法 - 树形结构

树和森林(Tree and Forest)相关推荐

  1. 15- 决策回归树, 随机森林, 极限森林 (决策树优化) (算法)

    1.  决策回归树: from sklearn.tree import DecisionTreeRegressor model = DecisionTreeRegressor(criterion='m ...

  2. 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测

    随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...

  3. Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  4. 随机森林(Random Forest)为什么是森林?到底随机在哪里?行采样和列采样又是什么东西?

    ensemble.RandomForestClassifier([-]) A random forest classifier. ensemble.RandomForestRegressor([-]) ...

  5. 数据结构-树和二叉树01(定义、度、深度、有序树、森林)

    树的定义 树作为一种一对多的数据结构,其定义如下: 树(Tree)是n(n ≥ 0)个结点得有限集.n = 0时称为空树.在任何一颗非空树中: (1)有且仅有一个特定的称为根(Root)的结点: (2 ...

  6. 随机森林(Random Forest)算法原理

    随机森林(Random Forest)算法原理 集成学习(Ensemble)思想.自助法(bootstrap)与bagging **集成学习(ensemble)**思想是为了解决单个模型或者某一组参数 ...

  7. 【机器学习】 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  8. 数据挖掘与机器学习——离群点检测之孤立森林(isolate forest)

    1.概述 孤立森林简单来讲:利用二叉树和随机值,将数据分在左右.正常的自是子孙满堂,异常的显然孤家寡人. 某些异常检测方法是对正常样本的描述,而孤立森林不是描述正常的样本点,而是孤立异常点. 2.概念 ...

  9. 孤立随机森林(Isolation Forest)(Python实现)

    目录 1 简介 2 孤立随机森林算法 2.1 算法概述 2.2 原理介绍 2.3 算法步骤 3 参数讲解 4 Python代码实现  5 结果  1 简介 孤立森林(isolation Forest) ...

  10. [Machine Learning Algorithm] 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

最新文章

  1. 用NVIDIA-NGC对BERT进行训练和微调
  2. 项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。...
  3. Windows自带的杀进程工具
  4. Office EXCEL 如何为宏命令指定快捷键或者重新设置快捷键
  5. MATLAB 使用CNN拟合回归模型预测手写数字的旋转角度(卷积神经网络)
  6. java 常用的api_Java中常用的API(一)——Object
  7. WebBrowser的Cookie操作(与CookieContainer的关系)
  8. [SimplePlayer] 1. 从视频文件中提取图像
  9. dax 筛选 包含某个字_DAX分享9:DAX中用变量来计算动态filter context中数值
  10. 定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
  11. 3D Vision公开课 | 移动机器人视觉三维感知的现在与将来
  12. 08.28 JavaScript 边界 选择修饰符 模式单元 修饰符 正则的使用
  13. 【Go语言】【16】GO语言的并发
  14. doceker模拟数据的生成
  15. Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用](秒杀imageloader)...
  16. 低秩矩阵完备_矩阵之芯 SVD: 基本应用以及与其他分解的关系
  17. 网络协议介绍(NetBIOS,NETBEUI,IPX/SPX,TCP/IP)
  18. 《计算机网络》章节重要概念
  19. 平衡搜索树中的左单旋右单旋双旋
  20. 上海波涛装饰集团有限公司乐山分公司

热门文章

  1. [codeup 2031]To Fill or Not to Fill
  2. C/C++[codeup 1943](大数)进制转换
  3. jsoup html to text,Jsoup和htmlunit结合使用。
  4. 215.数组中的第K个最大元素
  5. Momentum动量法
  6. 对于Y=Hx的H细节的一些讨论
  7. python学习——和python的第一次亲密接触
  8. matlab聚类分析_数据挖掘——聚类分析
  9. 凸优化第七章统计估计 7.1参数分布估计
  10. 一. 图模型(graphical model, GM)的表示