二叉树:是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的、称为根的左子树和右子树组成。
性质:1、二叉树的第i层(i>=1)上至多有2^i-1个结点。(可用归纳法证明)
2、高度为h的二叉树至多有2^h - 1个结点
3、包含n个元素的二叉树的高度至少为[log2(n+1)] 不小于log2(n+1)的整数
4、任意一棵二叉树中,若叶结点的个数为n0,度为2的结点的个数为n2,则必有n0=n2+1
满二叉树:高度为h的二叉树恰好有2^h - 1个结点
完全二叉树:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶节点集中在考左的位置
扩充二叉树(2-树):扩充二叉树除了叶子节点外,其余节点都必须由两个孩子
二叉树的先、中、后序遍历均是以访问根节点的位置区分的,知其中两种遍历,可唯一确定另一遍历顺序。
二叉树递归遍历:
//先序遍历
public void beforeTraversal(BinaryTree root)
{
if(root!=null)
{
System.out.print(root.data);
beforeTraversal(root.lchild);
beforeTraversal(root.rchild);
}
}
//中序遍历
public void centreTraversal(BinaryTree root)
{
if(root==null)
return;
centreTraversal(root.lchild);
System.out.print(root.data);
centreTraversal(root.rchild);
}
//后序遍历
public void afterTraversal(BinaryTree root)
{
if(root==null)
return;
afterTraversal(root.lchild);
afterTraversal(root.rchild);
System.out.println(root.data);
}