🐋树的基本概念
树是由n(n>=0)个结点所构成的有限集合
当n=0时,称为空树
当n>0时,n个结点满足以下条件:
有且仅有一个称为根的结点
其余结点可分为m个互不相交的有限集合,且每一个集合又构成一棵树,该树称为根节点的子树。
对于一颗非空树,其中有且仅有一个没有前驱的结点,这个结点就是【根节点】,其余结点有且仅有一个前驱,但可以有多个后继。
🌲树的表示法:树形表示法、文氏图表示法、凹入图表示法和广义表(括号)表示法
树形表示法
文氏图表示法
凹入图表示法
广义表(括号)表示法
🐋 树的常用术语
二叉树的概述
💚基本概念
二叉树是一个特殊的树,每个结点最多只有两棵子树,且两棵子树也是二叉树。
精确定义:二叉树是由n(n>=0)个结点所构成的有限集合。当n=0时,这个集合为空,此时二叉树为空树,当n>0时,这个集合是由一个根结点和两个互不相交的分别称为左子树和右子树的二叉树构成。
二叉树的两棵子树有左右之分,所以二叉树是有序树。
二叉树的5种基本形态:空树、只有根结点、只有左子树、只有右子树、既有左子树又有右子树
🐋满二叉树定义
满二叉树是二叉树的一种特殊情况。
如果在一棵二叉树中,它的所有结点或者叶结点,或者是左、右子树都非空,并且所有叶结点都在同一层上,则称这棵二叉树为满二叉树。
🐋完全二叉树定义
如果在一棵具有n个结点的二叉树中,它的逻辑结构与满二叉树的前n个结点的逻辑结构相同,则称这样的二叉树为完全二叉树。
完全二叉树和满二叉树的区别:
完成二叉树:不要求所有的结点,同一层都要有左右孩子。
满二叉树:要求所有的结点的同一层都要有左右孩子。
🐋单分支树的定义
左支树:所有结点都没有右孩子的二叉树。
右支树:所有结点都没有左孩子的二叉树。
💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙
🐋二叉树的遍历
🌳概述
二叉树的遍历:沿着某条搜索路径对二叉树中的结点进行访问,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义较为广泛,例如:输出结点信息。
二叉树有3条搜索路径:
先上后下
先左后右
先右后左
对应3条搜索路径,二叉树有7种遍历方式:
先上后下
层次遍历
先左后右 (D data根、 L left左、R right 右)
DLR (先根遍历、先序遍历、先根序遍历)
LDR (中根遍历、中序遍历、中根序遍历)
LRD (后根遍历、后序遍历、后根序遍历)
先右后左
DRL
RDL
RLD
需要遍历的二叉树: