普通二叉树:对二叉树的结点没有位置及数量上的要求
满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
有序二叉树(又称二叉排序树,又称二叉查找树,亦称二叉搜索树):左子树的所有结点都比双亲小,右子树的所有结点都比双亲大
平衡二叉树:左右高度相差不超过1的有序二叉树 (首先是有序的二叉树,树的左右子树的高度相差不超过1,并且子树的子树都满足这个要求)
红黑树:实现平衡的一种手段 结点只有两种颜色:红和黑; 根节点是黑色;从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
线索二叉树 :在二叉树的结点上加上线索的二叉树
平衡二叉搜索树:平衡二叉树和二叉搜索树的结合的结合
完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
完全二叉树的特点:
1.叶子结点在层次最大的两层出现;
2.满二叉树是完全二叉树,完全二叉树不一定是满二叉树
3.在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。
4.完全二叉树中,度为1的节点只能是1或者0个
完全二叉树的性质:
1.n个结点的完全二叉树的深度为大于以2为底n+1的对数的最小整数(>log2(n+1)的最小整数)。
2.将完全二叉树自顶而下,同一层自左向右编号,则有:
如果i=1,i为根,无双亲;如果i>1,双亲为结点 i/2
如果2i<=n,结点i的左孩子为结点2i;否则无左孩子
如果2i+1<=n,结点i的右孩子为结点2i+1,否则无右孩子
结点i所在的层次为log2n+1
i为奇数,且i!=1,i处于右兄弟的位置,它的左兄弟为结点i-1
i为偶数,且i!=n,i处于左兄弟的位置,它的右兄弟为结点i+1
3.2^(k-1) 或 pow(2,k-1) 算k层结点数
4.一棵有124个叶结点的完全二叉树,最多有248个结点 (248=124+123+1)
具有n个结点的不同二叉树有多少树形?
与用栈得出的从1到n的数字有多少不同的排列具有相同的结论:C(2n,n)/(n+1) (C(2n,n)表示2n里取n)
设n个数出栈方式数量为f(n)
因为入栈的顺序是确定的,下标记为1,2,3,...n
设最后一个出栈的是第k个数,则说明k之前的k-1个数先完成进栈出栈,有f(k-1)种方式;
然后k之后的n-k个数再完成进栈出栈,有f(n-k)种方式;最后第k个数出栈。
这时就有f(k-1)*f(n-k)种方式
而每一个数都有可能是最后出栈的
所以有f(n)=f(0)*f(n-1)+f(1)*f(n-2)+...+f(k-1)*f(n-k)+...+f(n-1)*f(0)
上面f(0)=1是为了写成统一式:f(n)=f(k-1)*f(n-k)
由上式的通项就是卡特兰数f(n)=C(2n,n)/(n+1)