首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

堆结构的有关问题~帮小弟我看看吧,多谢

2012-03-20 
堆结构的问题~帮我看看吧,谢谢一个堆的大小为n个元素,以根节点为父节点的子树大小最多为2/3*n,不晓得怎么

堆结构的问题~帮我看看吧,谢谢
一个堆的大小为n个元素,以根节点为父节点的子树大小最多为2/3*n,不晓得怎么证明出来的,谢谢了

[解决办法]
不知道lz说的堆结构是否是堆排序中的堆结构。那个堆结构的话,除了树顶部的值最大外。
组成堆的树还是拟满树。也就是说假设这个堆有L层的话。那除了L层外其他的层的节点都
是满的。而且L层的节点是从左到右排列的。
这样的话就好证明了。

假设树有L层,则根节点的子节点的子树最多为L-1层也就是说自述的节点最多为2~(L-1)-1个
(其中~表示指数)因为除了L层,其他层都是满的所以根节点的子节点最少有L-2层是满的
所以最少为2~(L-2) - 1;
也就是说以根节点为父节点的两棵树的两棵树的节点 比2~(L-2)-1大 比2~(L-1) -1 小

所以结点数多的那颗子树最多不会超过少的那个子树与根节点的和的 (2~(L-1) -1)/(2~(L-2))
<2
所以它不可能超过所有节点的2/3

热点排行