期末复习之二叉树

//本文主要面对个人本次期末考试

首先是关于二叉树的一些计算上:

性质1:二叉树第i层上的结点数目最多为2i(i>=1)

性质2:深度为k的二叉树至多有2k+1-1个结点(k>=1)//上面等比数列求和

性质3:包含n个结点的二叉树的高度至少为(log2n)//本校教材中:最大层数=深度=高度;

性质4:在任意一棵二叉树中,若叶结点的个数为n0,度为2的结点数为n2,则n0=n2+1

满二叉树

  定义:高度为h,并且由2h-1个结点组成的二叉树,称为满二叉树。(节点数最多)

完全二叉树

  定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的位置上,这样的二叉树称为完全二叉树。//叶结点只能出现在最下面地那两层。

  如果一棵完全二叉树的结点总数为n,那么叶子结点等于n/2(当n为偶数时)或者(n+1)/2(当n为奇数时)///用上面的性质1,可以证明。

二叉树的存储结构:

顺序存储:A[i]的父节点下标为[i/2],左孩子为[2*i],右孩子为[2*i+1]

链式存储:一般是三个域:left  data  right

     二般一点的是四个域:left parent data right

二叉树的遍历

1.根据两个遍历确定二叉树。

2.先根遍历是一直访问左节点,也一直压栈,直到左为空再弹出最后那个元素,往右访问一个。(换言之,栈中的变化是从一直向左,到向左不行了,换一下向右,然后继续向左走。直到栈空)。

中根遍历和先根遍历相似,只是输出变在了弹栈的那一行,也就是说出栈进栈还是一样的。

高能::对于入栈序列1....n,有多少种可能的出栈序列Catalan(n)=C(2n,n)/(n+1);

3.非递归后跟遍历简直就是个坑,最方便的就是设置一个标号i,i=2的时候再出栈。

线索二叉树,这一块暂时只要知道空的地方:左指前,右指后,最前面和最后面赋值为NULL(有一个Thread域来表示是不是为空=1。)

//可以很方便的找到给的节点的遍历的前面和后面的是什么东西。一路左走(右走)到Thread=1,就是要找的第一个(最后一个)点。

关于中序线索二叉树的其他内容在PPT9,P27。

中序扩展二叉树,就是以空间换时间的代价,把标记去掉了,换成了指针域。

猜你喜欢

转载自www.cnblogs.com/yoriko/p/12031723.html
今日推荐