维护堆性质中,堆(完全二叉树)中i结点的子树大小至多为2n/3的证明

来源:互联网 发布:网络安全法考试单选 编辑:程序博客网 时间:2024/05/16 06:33

思路源自于:
http://bbs.sjtu.edu.cn/bbstcon,board,Algorithm,reid,1242723801,file,M.1242723801.A.html
在理解维护堆性质时,算法导论上面只简单提了一下子树的大小为2n/3,不明白,从网上理解得到如下结论。
已知:
当堆是满二叉树时:(ceiling表示其最大值)
最底层的元素个数为ceiling(n/2)个,这层高度为0;
倒数第二层元素个数为ceiling(n/4)个,高度为1;
倒数第三层元素个数为ceiling(n/8)个,高度为2;
如此类推,高度为h的,在倒数第h + 1层,元素个数为ceiling(n / 2^(h + 1))。
注意:高度是从最底层算起,最底层为0,而深度是从最高层算起,根节点处为高度0.
证明如下:
规定总size为n,要求根的左子树的最大size。(由于右子树size总是<=左子树size)。那么显然,观察最底层节点数目为0, 1, 2…的情况,显然半满的时候左子树达到了最大。半满定义:最底层的叶子节点个数=满二叉树的一半,且底层半满的元素都在左子树上面。以下求此时左子树的大小:
设底层半满时节点数为y,则再加y个节点,就是满树,并且根据满二叉树的特点—若底层元素个数为x,则元素总数为2x-1.
由此得到:n + y = (2y) * 2 - 1 = 满树size,可得n = 3y - 1。
满树时,左子树节点数 = (满树size - 1) / 2 = (4y-1)/2=2y= 2n / 3=堆(完全二叉树)中左子树节点数。

0 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 芙桑花叶子发黄怎么办 长春花长得太高怎么办 四季梅叶子蔫了怎么办 吸财树叶子蔫了怎么办 民族团结手抄报间单有漂亮怎么办 鹦鹉尾巴毛掉了怎么办 羊绒衫领子打太大了怎么办 内裤洗了还有一股味道怎么办 月经下不来内裤上总有脏东西怎么办 夏天外衣薄露出内衣怎么办 金毛体味很重怎么办 直筒连衣裙太短怎么办 托班社会下雨了怎么办 托班下雨了怎么办教案 吃鸡界面有鼠标怎么办 老年机成英语了怎么办 手机成了英语了怎么办 塑料袋融化粘到衣服上怎么办 厕所被卫生纸堵了怎么办 钻石画的胶不粘了怎么办 客厅沙发选大了怎么办 连衣裙腰大了怎么办呀 憋尿后出现尿急尿涨怎么办 脚有酸酸的味道怎么办 三星手机home键失灵怎么办 三星s6返回键失灵怎么办 三星s7屏幕漏液怎么办 三星s8出现蓝框怎么办 三星手机短信图标没了怎么办 ps没有足够的ram怎么办 ps性能调不了是怎么办 苹果6p照相模糊怎么办 相框玻璃碎了怎么办 word文档加密后忘记密码怎么办 手机wps密码忘了怎么办 苹果手表忘了密码怎么办 苹果系统忘了密码怎么办 ps画板建小了怎么办 wps表格密码忘了怎么办 word文档变成虚的怎么办 wps论文中表格跨页怎么办