二叉树:是n个结点的有限集,它或为空集,或由一个根结点及两棵互不相交的、分别称为该根的左子树和右子树的二叉树组成。
二叉树不是树的特殊情况,这是两种不同的数据结构;它与无序树和度为2的有序树不同。
二叉树的性质:
1) 二叉树第i层上的结点数最多为2^(i-1);
2) 深度为k的二叉树至多有2^k-1个结点;
3) 在任意二叉树中,叶子数为n0,度为2的结点数为n2,则n0=n2+1;
满二叉树是一棵深度为k的且有2^k-1个结点的二叉树;
完全二叉树是至多在最下两层上结点的度数可以小于2,并且最下层的结点集中在该层最左的位置的二叉树;
具有N个结点的完全二叉树的深度为log2N取整加1;
二叉树的存储结构
(1)顺序存储结构:把一棵有n个结点的完全二叉树,从树根起自上而下、从左到右对所有结点编号,然后依次存储在一个向量b[0~n]中,b[1~n]存放结点,b[0]存放结点总数。
各个结点编号间的关系:
1) i=1是根结点;i>1则双亲结点是i/2取整;
2) 左孩子是2i, 右孩子是2i+1;(要小于n)
3) i>(n/2取整)的结点是叶子;
4) 奇数没有右兄弟,左兄弟是i-1;
5) 偶数没有左兄弟,右兄弟是i+1;