数据结构——二叉树四种遍历的实现-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

相关文章
|
20天前
|
C语言
【数据结构】二叉树(c语言)(附源码)
本文介绍了如何使用链式结构实现二叉树的基本功能,包括前序、中序、后序和层序遍历,统计节点个数和树的高度,查找节点,判断是否为完全二叉树,以及销毁二叉树。通过手动创建一棵二叉树,详细讲解了每个功能的实现方法和代码示例,帮助读者深入理解递归和数据结构的应用。
71 8
|
1月前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
24 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
1月前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
25 0
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
|
1月前
|
Java
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
28 1
|
1月前
|
算法 Java C语言
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
25 1
|
1月前
|
存储
【数据结构】二叉树链式结构——感受递归的暴力美学
【数据结构】二叉树链式结构——感受递归的暴力美学
|
1月前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
1月前
|
存储 算法 调度
数据结构--二叉树的顺序实现(堆实现)
数据结构--二叉树的顺序实现(堆实现)
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(三)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(二)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解