数据结构~~树(2024/2/8)

目录

1、定义:

2、树的基本术语:

3、树的表示


1、定义:

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

树是递归定义的!!

【注意】

(1)当n=0时称为空树。

(2)当n=0时称为空树,对于非空树T:

只有一个根结点(root);

除根节点外的其余结点可分为m个互不相交的有限集T1,T2,......,Tm,其中每个集合本身又是一棵树,称为根的子树。

2、树的基本术语:

结点:树的一个独立单元,包含一个数据元素或者指向其子树的分支。如图中的A,B,C等。

**结点的度:**结点拥有的子树数称为结点的度(也可以理解为这个结点有多少个孩子)。如A的度是2,B的度是3,D的度是0。

树的度:树的各个结点的度的最大值。如图中的树的度为3。

叶子结点(或者终端结点):度为0的结点。如图中的D,E,F,G。

非终端结点:度不为0的结点。除根结点外,非终端结点也称为内部结点。如图中B,C。

孩子结点(或者子节点):一个结点的子树的根结点称为该结点的孩子结点。如图中B和C是A的子结点。

双亲结点(或者父结点):一个结点有一个子结点,该结点称为其子结点的父结点。如图中,A是B和C的双亲结点。

兄弟结点:同一双亲的孩子之间互称兄弟。如图中B和C是兄弟结点。

祖先:从根结点到该结点所经分支上的所有结点。如D的祖先是A和B。

子孙:以某结点为根的子树的任一结点都称为该结点的子孙。如D,E,F是B的子孙。

层次:从根结点开始,根结点为第一层,根的孩子为第二层,以此类推直到最后一层。如A是第一层,B是第二层,D是第三层。

深度:树中结点的最大层次。如A这棵树的深度是3。

森林:由m棵互不相交的树构成的集合。如去掉A结点,B和C这两棵子树就是森林。

3、树的表示

树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,实际中树有很多种表示方式,如:双亲表示法,孩子表示法、孩子兄弟表示法等等。

我们了解其中最常用的孩子兄弟表示法:

复制代码
typedef int DataType;
struct Node
{
     struct Node* firstChild1; 
     struct Node* pNextBrother; 
     DataType data; 
};

下一次我们开始学习二叉树!!!

相关推荐
故事和你9113 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
破浪前行·吴15 小时前
数据结构概述
数据结构·学习
小欣加油16 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼16 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode
码完就睡19 小时前
数据结构——栈和队列的相互模拟
数据结构
iiiiyu19 小时前
常用API(SimpleDateFormat类 & Calendar类 & JDK8日期 时间 日期时间 & JDK8日期(时区) )
java·大数据·开发语言·数据结构·编程语言
故事和你9119 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
꧁细听勿语情꧂21 小时前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
Felven21 小时前
B. The 67th 6-7 Integer Problem
数据结构·算法
研☆香21 小时前
聊一聊如何分析js中的数据结构
开发语言·javascript·数据结构