持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
前言
树的知识就十分多且杂了
看leetcode的分类就能看出来,二叉树就有200多道题,树又有200多道。所以树的知识还是很重要的。
树的最大特点就是:非线性结构,一个直接前驱,但可能有多个 直接后继(1:n)
树
树是由一个或多个(n≥ 0)结点组成的有限集合。有且仅有一个结点称为根(root);当n>1时,其余的结点分为m(m≥ 0)个 互不相交的有限集合T1、T2…Tm。每个 集合本身又是棵树,被称作这个根的子树。根和子树的关系如下所示:
树的抽象数据类型定义
ADT Tree {
数据对象D:D是具有相同特性的数据元素的集合
数据关系R: 若D是空集,则称为空树;//允许n=0
若D中仅含一个数据元素,则R为空集;
数据操作P:
}Tree
树的表示方法
- 图形表示法:就是像上图一样的表示方法
- 嵌套集合表示法:
- 广义表表示法(这个之前介绍过 根作为由子树森林组成的表的名字写在表的左边):
- 凹入表示法(目录表示法)
树的基本术语
森林----指m棵不相交的树的集合
双亲----上层的那个结点(直接前驱)
孩子----下层结点的子树的根(直接后继)
兄弟----同一双亲下的同一层结点(孩子之间互称兄弟)
树的一些术语很像前端DOM的叫法(其实是DOM树借鉴了树的概念),结合起来理解一下就容易理解多了。
结点----树中的数据元素
结点----树中的数据元素
后记
树中最常用的就是二叉树,这部分会在下次介绍。