【数据结构】—二叉树遍历(一)

简介: 【数据结构】—二叉树遍历

🐋树的基本概念


树是由n(n>=0)个结点所构成的有限集合


当n=0时,称为空树


当n>0时,n个结点满足以下条件:


有且仅有一个称为根的结点


其余结点可分为m个互不相交的有限集合,且每一个集合又构成一棵树,该树称为根节点的子树。


对于一颗非空树,其中有且仅有一个没有前驱的结点,这个结点就是【根节点】,其余结点有且仅有一个前驱,但可以有多个后继。


3c7a3ad0a0024f748bc461ce9e7f917d.png


🌲树的表示法:树形表示法、文氏图表示法、凹入图表示法和广义表(括号)表示法


树形表示法


文氏图表示法

963894c2377d4d2f8d0034941940f16a.png

凹入图表示法

3a186d0736f6441f97b445d196f09d26.png


广义表(括号)表示法

fe22571a998b419b8b6a79387b5c1342.png


🐋 树的常用术语

image.png

image.png


二叉树的概述


💚基本概念


二叉树是一个特殊的树,每个结点最多只有两棵子树,且两棵子树也是二叉树。


精确定义:二叉树是由n(n>=0)个结点所构成的有限集合。当n=0时,这个集合为空,此时二叉树为空树,当n>0时,这个集合是由一个根结点和两个互不相交的分别称为左子树和右子树的二叉树构成。


二叉树的两棵子树有左右之分,所以二叉树是有序树。


8c20d0c4a5ce467191abf8ab29ae6ef7.png


二叉树的5种基本形态:空树、只有根结点、只有左子树、只有右子树、既有左子树又有右子树


955973cebe49411e9d1b984759941e8b.png


🐋满二叉树定义


满二叉树是二叉树的一种特殊情况。


如果在一棵二叉树中,它的所有结点或者叶结点,或者是左、右子树都非空,并且所有叶结点都在同一层上,则称这棵二叉树为满二叉树。


d20f51dd9f574050929605e5e53a9fc9.png


🐋完全二叉树定义


如果在一棵具有n个结点的二叉树中,它的逻辑结构与满二叉树的前n个结点的逻辑结构相同,则称这样的二叉树为完全二叉树。

d6f7b933814c4cd0990e160b32c7dfb7.png

3b439a35413a4932a5fe0b6c57fd10ca.png


完全二叉树和满二叉树的区别:


完成二叉树:不要求所有的结点,同一层都要有左右孩子。

满二叉树:要求所有的结点的同一层都要有左右孩子。

🐋单分支树的定义

左支树:所有结点都没有右孩子的二叉树。

542a1e18f70a442ab3778571710ec718.png


右支树:所有结点都没有左孩子的二叉树。fe9b24b6a0b64f42a3f47bb233708d52.png



💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙


🐋二叉树的遍历


🌳概述


二叉树的遍历:沿着某条搜索路径对二叉树中的结点进行访问,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义较为广泛,例如:输出结点信息。


二叉树有3条搜索路径:


先上后下


先左后右


先右后左


对应3条搜索路径,二叉树有7种遍历方式:


先上后下


层次遍历


先左后右 (D data根、 L left左、R right 右)


DLR (先根遍历、先序遍历、先根序遍历)


LDR (中根遍历、中序遍历、中根序遍历)


LRD (后根遍历、后序遍历、后根序遍历)


先右后左


DRL


RDL


RLD


需要遍历的二叉树:

a8f8da19e5ce47cebfa53ad614abd8ab.png


相关文章
|
9天前
|
数据可视化
数据结构——lesson8二叉树的实现
本文介绍了二叉树的基本操作和实现,包括二叉树的构建、销毁、节点个数计算、叶子节点个数、第k层节点个数、查找、高度计算以及判断是否为完全二叉树的方法。通过递归和层序遍历等技巧,详细阐述了这些操作的原理和代码实现。文章以实例和图解帮助读者理解二叉树的各种特性和操作。
|
2天前
|
存储 分布式数据库
[数据结构]~二叉树
[数据结构]~二叉树
|
2天前
|
C语言
【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)
【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)
266 52
|
2天前
【数据结构】二叉树(遍历,递归)
【数据结构】二叉树(遍历,递归
13 2
|
2天前
【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
14 4
|
2天前
【数据结构】二叉树-堆(函数实现)
【数据结构】二叉树-堆(函数实现)
10 2
|
2天前
|
存储 分布式数据库
【数据结构】树和二叉树堆(基本概念介绍)
【数据结构】树和二叉树堆(基本概念介绍)
20 6
|
8天前
|
机器学习/深度学习 分布式数据库
数据结构第六课 -----链式二叉树的实现
数据结构第六课 -----链式二叉树的实现
|
8天前
|
存储 算法 分布式数据库
数据结构第五课 -----二叉树的代码实现
数据结构第五课 -----二叉树的代码实现
|
9天前
数据结构——二叉树的层序遍历
数据结构——二叉树的层序遍历