数据结构模块

线性表

顺序表:内存中分配连续的空间,只存数据,不需要存地址信息,添加删除效率低,查找方便。

链表:增加删除效率高,不会有闲置空间,但是要存储下一个节点的编号,所以要从不同角度看节省空间这个问题。

设一棵完全二叉树共有700个结点,求该二叉树有几个叶子结点?

根据“二叉树的第i层至多有2^(i − 1)个结点;深度为k的二叉树至多有2^k − 1个结点(根结点的深度为1)”这个性质:
因为2^9-1 < 700 < 2^10-1 ,所以这个完全二叉树的深度是10,前9层是一个满二叉树,
这样的话,前九层的结点就有2^9-1=511个;而第九层的结点数是2^(9-1)=256
所以第十层的叶子结点数是700-511=189个;
现在来算第九层的叶子结点个数.
由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点.因为第十层有189个,所以应该去掉第九层中的(189+1)/2=95个;
所以,第九层的叶子结点个数是256-95=161,加上第十层有189个,最后结果是350个.

猜你喜欢

转载自blog.csdn.net/wxb666666/article/details/83409799
今日推荐