☰
数据结构-树
2026/10/21 9:24:54 网站建设 项目流程

树形:一对多
反映的是一种层次结构

eg:祖宗
爷爷
叔叔 爸爸 伯伯
你

班级组织结构,企业组织架构,家谱等都是树这种结构

一、概念

1. 递归式的定义
树是n(n≥0)个结点的有限集合:
·当n=0时,称为空树;
·当n>0时,满足:
1)有且仅有一个根结点(Root);
2)其余结点可分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm
每个集合本身也是一棵树,称为根的子树(Subtree)

2. 二叉树(Binary Tree)

1)定义
二叉树是n(n≥0)个结点的有限集合:
·或为空树(n=0);
·或由一个根结点和两棵互不相交的子树组成,分别称为左子树和右子树,且二者有严格顺序。
2)特点
1.每个结点最多有两个子树;
2.左、右子树有顺序,不可互换;
3.即使某结点仅有一个子树,也必须明确是左子树还是右子树。

所以我们通常定义成这样的结构体来表示二叉树这种类型:

二、叉树的遍历

深度优先:
前序遍历---根左右
中序遍历---左根右
后续遍历---左右根

广度优先:
层次遍历

1. 前序遍历

前序遍历:ABDGHCEIF

2. 中序遍历

中序遍历:GDHBAEICF

3. 后序遍历

后序遍历:GHDBIEFCA

4. 另:
1. 每个节点都走了对应访问次序
如果是前序,则每个节点都走了一下前序的访问过程

2. 假设:
知道前序 和中序
前序遍历—根左右 //主要知道谁是根
ABDGHCEIF
中序遍历—左根右 //主要知道谁左谁右
GDHBAEICF

4.---------就可以知道这个二叉树的样子

同理:知道中序和后序也能知道二叉树的样子

但只知道前序和后序无法知道二叉树的样子

三、代码实现

1. 定义节点

2. 创建二叉树

3. 前序遍历

4. 中序遍历

5. 后序遍历

6. 广度遍历

广度遍历:按照层次依次输出

需要用到在队列时写的函数(笔记在前面有)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询