一、概念理解
二叉树(Binary Tree)是n(n>=0)个结点的有限集合:
1、n=0时,为空集(空二叉树)
2、n>0时,由一个根结点和两棵互不相交的子树组成,注意:只有两棵子树且不相交!分别称为根结点的左子树和右子树。
3、事实上,不一定必须有两棵子树,只要子树数<=2即可
4、每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点
5、左子树与右子树是有顺序的,不可以颠倒次序
6、即使树中某结点只有一颗子树,也要区分是左子树还是右子树!
二、基本形态
- 空二叉树
- 只有根结点的二叉树
- 根结点只有左子树的二叉树
- 根结点只有右子树的二叉树
- 根结点既有左子树又有右子树的二叉树
三、特殊二叉树
1、斜树:一个劲往左斜或者一个劲往右斜,但不可以左斜再右斜或者右斜再左斜
2、满二叉树:简单来说,就是“完美的二叉树 ”。所有分支结点都存在左右子树,并且所有叶子都在同一层。
特点:
- 叶子只能出现在最下一层
- 非叶子结点的度一定是2
- 在同样深度的二叉树中,满二叉树的结点个数一定最多,叶子数一定最多
3、完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点位置完全相同,则这棵二叉树称为完全二叉树。
特点:
- 叶子结点只能出现在最下两层
- 最下层的叶子一定集中在左部连续位置
- 如果倒数第二层有叶子结点,一定都在右部连续位置
- 如果结点度为1,则该结点只有左孩子
- 同样结点个数的二叉树,完全二叉树深度最小(要考虑按顺序排结点)
- 满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
BY ZJQ