数据结构—树与二叉树篇I

来源:互联网 发布:网络安全工程师职责 编辑:程序博客网 时间:2024/06/03 15:16

4.1树

树的性质:

1)       树中的结点数等于所有结点的度数加1

2)       度为m的树中第i层上至多有m^(i-1)个结点(i>=1)

3)       高度为h的m叉树至多有(m^h-1)/(m-1)个结点

4)       具有n个结点的m叉树的最小高度为|- logm(n(m-1)+1) -|(取上限)

求解数结点和度之间的关系有:

1)       总结点数=N0+N1+N2+…….Nm

2)       总分支数=1xN1+2xN2+……+mxNm(度为m的结点引出m条分支)

3)       总结点数=总分支数+1

 

4.2树和二叉树

         二叉树的性质:

1)       非空二叉树上叶子结点数等于度为2的结点数加1即N0=N2+1

2)       非空二叉树第K层上至多有2^(k-1)个结点(K>=1)

3)       高度为H的二叉树至多有2^H-1个结点(H>=1)

         二叉树和度为2的有序树的区别

1)       度为2的树至少有3个结点,而二叉树可以为空

2)       度为2的有序树的孩子结点的左右次序是相对于另一孩子结点而言的,如果某个结点只有一个孩子结点,这个孩子结点就无须区分其左右次序,而二叉树无论其孩子数是否为2均需确定其左右次序,也就是说二叉树的结点次序不是相对于另一结点而言,而是确定的

         满二叉树(是特殊的完全二叉树):一颗高度为h,并且含有2*h-1个结点的二叉树称为满二叉树,即树中每一层都含有最多的结点。

        完全二叉树:设一个高度为h,有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。

1)       若i <=|_ n/2 _|,则结点i为分支结点,否则为叶子结点。

2)       叶子结点只可能在层次最大的两层的上出现。对于最大层次中的叶子结点,都依次排列在该层最左边的位置上

3)       如果有度为1的结点,只可能有一个,且该结点只有左孩子而无右孩子。(重要特征)。

4)       按层序编号后,一旦出现某结点(其编号为i)为叶子结点或只有左孩子,则编号大于i的结点均为叶子结点。(意思是度为1的结点只可能出现在倒数第二层)

5)       若n为奇数,则每个分支结点都有左子女和右子女;若n为偶数,则编号最大的分支结点(n/2)只有左子女,没有右子女,其余分支结点左,右子女都有。

         完全二叉树的性质:

1)       当i>1时,结点i的双亲编号为|_ i/2  _|(取下限),即当i为偶数时,其双亲结点编号为 i/2,它是双亲结点的左孩子;当i为奇数时,其双亲结点编号为(i-1)/2 ,它是双亲结点的右孩子。

2)       当2i<=N时,结点i的左孩子编号为2i,否则无左孩子

3)       当2i+1<=N时,结点i的右孩子编号为2i+1,否则无右孩子

4)       结点i所在层次(深度)为|_ log2i _|+1(取下限

5)       具有N个(N>0)结点的完全二叉树的高度为|- log2(N+1) -|(取上限)或|_ log2N_|+1(取下限


         二叉排序树:一颗二叉树或者是空二叉树,或者是具有如下性质的二叉树:左子树上的所有结点关键字均小于根结点的关键字;右子树上的所有结点的关键字均大于根结点的关键字。左子树和右子树又各是一个二叉排序树。

 

         平衡二叉树:树上任一结点的左子树和右子树深度之差不超过1

 

         线索二叉树

                   目的:为了加快查找结点前驱和后继的速度。(通过利用n+1个空指针域)



0 0