哈夫曼树 带权路径长度 简便求法 证明

qq_22162885 2016-04-02 08:50:03
各位大神应该知道
哈夫曼树的带权路径长度等于叶子节点的带权路径长度之和

也应该知道

哈夫曼树的带权路径长度也等于非叶子结点的权值之和(你们可以试试,叶子结点数必须大于1)

有没有哪位大神能够证明一下?
...全文
2337 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
扬枫十里 2019-09-09
  • 打赏
  • 举报
回复
引用 3 楼 一一一一一囧 的回复:
给你一个权集合权集合{12,4,5,6,1,2}可以构造如图所示的哈夫曼树。 因为每个分支结点都是两个结点的和,所以从一个叶子结点到根节点的路径上的所有分支结点的权值都可以分出来一个叶子结点的权值, 如权值为1的叶子结点,到根结点的路径有四个分支结点权值分别为,3 ,7 ,18,30,那么这四个权值又可以分别这么表示,1+2,1+7,1+17,1+29, 正好是叶子结点的权值1*路径长度4 其他叶子结点同理 树的带权路径长度等于叶子节点的带权路径长度之和 12*1+1*4+2*4+4*3+5*3+6*3=69 哈夫曼树的带权路径长度也等于非叶子结点的权值之和 30+18+7+11+3 =(12+1+2+4+5+6)+(1+2+4+5+6)+(1+2+4)+(5+6)+(1+2) =69 额,自己想的,不知道能不能理解,感觉还是直接看最后的式子比较明白(o゚v゚)ノ
一个叶子结点到根节点的路径上的所有分支结点的权值都可以分出来一个叶子结点的权值这句话是重点啊!多谢~ 看了终于秒懂了~
程序姜 2017-12-17
  • 打赏
  • 举报
回复
给你一个权集合权集合{12,4,5,6,1,2}可以构造如图所示的哈夫曼树。
因为每个分支结点都是两个结点的和,所以从一个叶子结点到根节点的路径上的所有分支结点的权值都可以分出来一个叶子结点的权值,
如权值为1的叶子结点,到根结点的路径有四个分支结点权值分别为,3 ,7 ,18,30,那么这四个权值又可以分别这么表示,1+2,1+7,1+17,1+29,
正好是叶子结点的权值1*路径长度4
其他叶子结点同理
树的带权路径长度等于叶子节点的带权路径长度之和
12*1+1*4+2*4+4*3+5*3+6*3=69
哈夫曼树的带权路径长度也等于非叶子结点的权值之和
30+18+7+11+3
=(12+1+2+4+5+6)+(1+2+4+5+6)+(1+2+4)+(5+6)+(1+2)
=69
额,自己想的,不知道能不能理解,感觉还是直接看最后的式子比较明白(o゚v゚)ノ

qq_22162885 2016-04-02
  • 打赏
  • 举报
回复
这个问题很神奇!
qq_22162885 2016-04-02
  • 打赏
  • 举报
回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧