二叉树练习题

Posted 可乐的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树练习题相关的知识,希望对你有一定的参考价值。

一、简答题(写出解题过程)

1.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,求树T中的叶子数。

    答:8.

    解题思路: 应用两个公式:(1) N=N0+1; (2) N=x+x1+x2+x3...+xn;度所对应的结点个数一共为N0=4+4+3+4=15,所以N=16;x为叶子结点,x1=4、x2=2、x3=1、x4=1,所以,x=16-4-2-1-1=8;


2.一棵完全二叉树有500个结点,请问该完全二叉树有多少个叶子结点?有多少个度为1的结点?有多少个度为2的结点?如果完全二叉树有501个结点,结果如何?请写出推导过程。

     答:500个结点:叶子结点为250个,度为1的有1个,度为2的有249个;  

       501个结点:叶子结点为251个,度为1的有0个,度为2的有250个;

解题思路:因为是完全二叉树,叶子结点个数为1+(n-1)/2(向下取整),度为1为(奇0偶1),度为2为(n-1)/2向下取整。


3. 已知一棵二叉树的中根遍历序列和后根遍历序列分别为BDAFEHGC和DBFHGECA,试画出这棵二叉树。



4. 已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。



二、补全算法中语句

计算二叉数的的深度。

int BtreeDepth (BTreeNode *BT)

{

if (BT= =NULL)

return 0;

else

{

int dep1,dep2;

dep1= BtreeDepth(BT->Lchild);

dep2= BtreeDepth(BT->Rchild);

if (dep1>dep2)  dep2=dep1;

return   dep2+1  ;

}

 


以上是关于二叉树练习题的主要内容,如果未能解决你的问题,请参考以下文章

二叉树练习题2-对称二叉树

二叉树练习题

数据结构——二叉树的基础练习题(单值二叉树,翻转二叉树,相同的树,对称二叉树,另一颗子树,二叉树的前序遍历)

TOJ 1224数据结构练习题――后序遍历二叉树

二叉树练习题

二叉树遍历练习题