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

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

🐋树的基本概念


树是由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


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

热门文章

最新文章