二叉树定义
二叉树是n(n>=0)个节点的有限集合。该集合或者未空集(称为空二叉树),或者有一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成。
二叉树特点
1.每个节点最多有两棵子树,所以二叉树中不存在度大于2的节点。
2.左、右子树是有顺序的,次序不能颠倒。
3.即使书中某节点只有一棵子树,也要区分它是左子树还是右子树。
完全二叉树
对一棵具有n个节点的二叉树按程序编号,如果编号为i(1<=i<=n)的节点与同样深度的满二叉树总编号为i的节点在二叉树中位置完全相同,则这可二叉树称为完全二叉树。
完全二叉树特点
1.叶子节点只能出现在最下两层
2.最下层的叶子一定集中在左部连续位置
3.倒数二层若有叶子节点,一定都在右部连续位置
4.如果节点度为1,则该节点只有左孩子,即不存在只有右子树的情况
5.同样节点的二叉树,完全二叉树深度最小
二叉树的性质
1.在二叉树的第层上之多有2^(i-1)个节点(i>=1)
2.深度为k的二叉树最多有2^k-1个节点(k>=1)
3.任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1
4.具有n个节点的完全二叉树的深度为【logn】+1(【x】标识不大于x的最大整数,即向下取整)
5.如果对一棵有n个节点的完全二叉树(其深度为【logn】+1)的节点按程序编号,对任一节点i(1<=i<=n)有:
- 如i=1,则节点i是二叉树的根,无双亲,如果i>1,则双亲是【i/2】
- 如2i>n,则节点i无左孩子(节点i为叶子节点),否则其做孩子是2i
- 如果2i+1>n,则节点i无有孩子,否则有孩子是2i+1