数据结构~~树(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; 
};

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

相关推荐
bkspiderx7 小时前
C++经典的数据结构与算法之经典算法思想:贪心算法(Greedy)
数据结构·c++·算法·贪心算法
中华小当家呐8 小时前
算法之常见八大排序
数据结构·算法·排序算法
tju新生代魔迷9 小时前
数据结构:双向链表
数据结构·链表
songx_9910 小时前
leetcode9(跳跃游戏)
数据结构·算法·游戏
学c语言的枫子10 小时前
数据结构——双向链表
c语言·数据结构·链表
Boop_wu11 小时前
[数据结构] 栈 · Stack
数据结构
kk”11 小时前
C语言快速排序
数据结构·算法·排序算法
3壹12 小时前
数据结构精讲:栈与队列实战指南
c语言·开发语言·数据结构·c++·算法
papership12 小时前
【入门级-算法-6、排序算法:选择排序】
数据结构·算法·排序算法
YS_Geo15 小时前
Redis 深度解析:数据结构、持久化与集群
数据结构·数据库·redis