数据结构——二叉树四种遍历的实现-1

简介: 数据结构——二叉树四种遍历的实现

一、树的概念

1、树的定义

1)树

 树是 n(n≥0) 个结点的有限集合。当 n>0 时,它是一棵非空树,满足如下条件:

   1)有且仅有一个特定的结点,称为根结点Root;

   2)除根结点外,其余结点分为 m 个互不相交的有限集合 T1、T2、…………、Tm,其中每一个 Ti(1≤i≤m) 又是一棵树,并且为根结点 Root 的子树。如图所示,代表的是一棵以 a 为根结点的树。

3ed4f07cbbd36d011442c9a969af3178_4c53f2ae8b04462ba210dde4b0f54ada.png

2)空树

 当 n=0,也就是 0 个结点的情况也是树,它被称为空树。


3)子树

 树的定义用到了递归的思想。即树的定义中还是用到了树的概念,如图所示,T1 和 T2 就是结点 a 的子树。结点 d、g、h、i 组成的树又是结点 b 的子树等等。

9054f4ba1f3d9eca356c874f20d62209_b5ab603480984ea7a8e9eda53f02064e.png

 子树的个数没有限制,但是它们一定是互不相交的,如下图所示的就不是树。因为在这两个图中,a 的子树都有相交的边。

0691012b7ad2d5f5d8d51a92dda593ad_2d3b31e308fc45d2bc45355c8d5eef07.png

2、结点的定义

 树的结点包含一个 数据域 和 m 个 指针域 用来指向它的子树。结点的种类分为:根结点、叶子结点、内部结点。结点拥有子树的个数被称为 结点的度。树中各个结点度的最大值被称为 树的度。


1)根结点

 一棵树的根结点只有一个。


2)叶子结点

 度为 0 的结点被称为 叶子结点 或者 终端结点。叶子结点的不指向任何子树。


3)内部结点

 除了根结点和叶子结点以外的结点,被称为内部结点。

69269692825e68972f3c3869f667b47e_865c4ab5e85a47bd92f3a7aea133b666.png

 如上图所示,红色结点 为根结点,蓝色结点 为内部结点,黄色结点 为叶子结点。


3、结点间关系

1)孩子结点

 对于某个结点,它的子树的根结点,被称为该结点的 孩子结点。

4157098aee8e3397a5915e6b463c9b04_22e50d0e845e499792644724226ec2f2.png

 如上图所示,黄色结点 d 是 红色结点 b 的孩子结点。


2)父结点

 而该结点被称为孩子结点的 父结点。

dad818bb012beb5f8820bcb4509c2ef9_8b1abf3572b8491ab0c80293f6509a9b.png

 如上图所示,蓝色结点 a 是 红色结点 b 的父结点。


3)兄弟结点

 同一父结点下的孩子结点,互相称为 兄弟结点。

b51c7863512887d314b479172c8156ca_28d360c3275b43e3818bd0bc12669ec1.png

 如上图所示,绿色结点 c 和 红色结点 b 互为兄弟结点。


4、树的深度

 结点的层次从根结点开始记为第 1 层,如果某结点在第 i 层,则它的子树的根结点就在第i+1 层,树中结点的最大层次称为 树的深度。

 如下图所示,代表的是一棵深度为 4 的树。

56309914d044a7ee9f05f3b007823525_ee7b863960e64bc08da5354f689d2007.png

5、森林的定义

 森林是 m 棵 互不相交的树的集合,对于树的每个结点而言,其子树集合就是森林。

 如图所示,b 和 c 两棵子树组成的集合就是一个森林。

964ba33e9e2a330a96d0b79546c664a1_c3736b6fba40402884ec901c1c1daf16.png

二、二叉树的概念

1、二叉树的性质

 二叉树是一种树,它有如下几个特征:

   1)每个结点最多 2 棵子树,即每个结点的孩子结点个数为 0、1、2;

   2)这两棵子树是有顺序的,分别叫:左子树 和 右子树;

   3)如果只有一棵子树的情况,也需要区分顺序,如图所示:

  b 为 a 的左子树;


 c 为 a 的右子树;


数据结构——二叉树四种遍历的实现-2

https://developer.aliyun.com/article/1507985

相关文章
|
2天前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
2天前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(三)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(二)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
|
存储
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(一)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(三)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
2天前
|
存储
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(二)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
2天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(一)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
1月前
|
存储 机器学习/深度学习
【数据结构】二叉树全攻略,从实现到应用详解
本文介绍了树形结构及其重要类型——二叉树。树由若干节点组成,具有层次关系。二叉树每个节点最多有两个子树,分为左子树和右子树。文中详细描述了二叉树的不同类型,如完全二叉树、满二叉树、平衡二叉树及搜索二叉树,并阐述了二叉树的基本性质与存储方式。此外,还介绍了二叉树的实现方法,包括节点定义、遍历方式(前序、中序、后序、层序遍历),并提供了多个示例代码,帮助理解二叉树的基本操作。
47 13
【数据结构】二叉树全攻略,从实现到应用详解
|
1天前
|
存储 算法 调度
数据结构--二叉树的顺序实现(堆实现)
数据结构--二叉树的顺序实现(堆实现)
|
2天前
|
存储
【初阶数据结构】树与二叉树:从零开始的奇幻之旅
【初阶数据结构】树与二叉树:从零开始的奇幻之旅