持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天
二叉树
树的基本术语补充
-
结点:树中的独立单元,包含一个数据元素和若干指向其子树的分支
-
结点的度:结点拥有的子树个数,
-
树的度:树内各节点的度的最大值
-
叶子(终端结点):度为0的结点
-
分支结点(非终端结点):度不为0的结点
根结点:没有祖先结点
内部结点:度不为0的,有祖先的结点
-
双亲:该结点为孩子的双亲
-
孩子:结点子树的根为该结点的孩子
-
兄弟:同一个双亲结点的孩子之间互称兄弟
-
堂兄弟:双亲在同一层的结点互为堂兄弟
-
祖先:从根到该结点所经分支上的所有结点
-
子孙:以某结点为根的子树中任一结点都是该结点的子孙
-
层次:从根结点算起,根为第一层,树中任一结点的层次=其双亲结点的层次+1
-
深度(高度):树中节点最大的层次
-
有序树:树中结点的各子树从左至右是有次序的,不能互换(最左边:第一个孩子;最右边:最后一个孩子)
-
无序树:树中结点的各子树从左至右无有次序的,能互换
-
森林:m颗不相交树的集合
对树中的每一个结点而言,其子树的集合即为森林
定义
n个结点的有限集合,该集合为空集或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成
特点
- 每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。注意不是只有两棵子树,而是最多有。
- 左子树和右子树是有顺序的,次序不能任意颠倒。
- 即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。
特殊的二叉树
满二叉树
定义
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树
特点
- 叶子只能出现在最下层。
- 非叶子结点的度一定是2。
- 在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多。
完全二叉树
定义
对一棵具有n个结点的二叉树按层序编号,如果编号为i(1<= i <= n) 的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同
即若设二叉树的深度为h,第 h 层所有的结点都连续集中在最左边,其它各层 (1~h-1) 的结点数都达到最大个数(即1~h-1层为一个满二叉树),
特点
叶子结点只能出现在最下两层。 最下层叶子一定集中在左部连续位置。 倒数两层,若有叶子结点,一定都在右部连续位置。 如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况。 同样结点数的二叉树,完全二叉树的深度最小。