题目:二叉树的带权路径长度(WPL)是二叉树中所有叶节点的带权路径长度之和。给定一颗二叉树T,采用二叉链表存储,节点结构为
           left weight right
           试设计求T的WPL的算法
分析:
        我们求带权路径长度,既需要知道叶节点的权值,也需要知道其经过的路径,我们可以设置一个变量depth代表深度,也就是
        路径长度,设置一个静态变量weight累加带权路径,会使用到递归。

代码如下:

struct tree {int weight;struct tree *left, *right;
};
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
tree *create(tree *T) {//建立一颗二叉树int weight;printf("请输入当前节点权值:weight=");scanf("%d", &weight);getchar();if (weight != -1) {T = (tree *)malloc(sizeof(tree));T->weight = weight;T->left = NULL;T->right = NULL;T->left = create(T->left);T->right = create(T->right);}return T;
}
int countWPL(tree *T, int depth) {static int totalWeight = 0;if (T) {if (!T->left &&

求叶节点带权路径长度之和相关推荐

  1. 构建哈夫曼树及求它的带权路径长度

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).要构成哈夫曼树,值比较大的叶子节点高度越低越好. ( ...

  2. 给定结点权值,求哈夫曼树的带权路径长度和

    1.哈夫曼树概念 一棵树中,从任意一个结点到达另一个结点的通路叫做路径,该路径包含的边的个数称为路径长度,每个结点带有的表示某种意义的值成为权值.从根结点到叶子结点的路径长度乘以叶子节点权值,得到的值 ...

  3. 带权路径长度wpl值_哈夫曼树带权路径长度怎么计算

    哈夫曼树的带权路径长度是什么? 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 2.树的带权路径长度(Weighted Pat ...

  4. 算法学习笔记——数据结构:哈夫曼树、带权路径长度WPL、哈夫曼编码

    引入 合并果子问题如下: 有n堆果子,每次可以合并任意两堆果子,耗费体力值为[两堆果子数之和],最终在n-1次合并后,得到一堆果子. 给出合并的方案,使得耗费的体力值最小 例如有3堆果子,质量依次为1 ...

  5. 二叉树的带权路径长度WPL算法实现

    文章目录 题目描述 算法思想 实现代码 题目描述  二叉树的带权路径长度WPL是二叉树中所有叶结点的带权路径长度之和.给定一棵二叉树,采用二叉链表存储,叶子结点的weight域为该结点的权值.请设计一 ...

  6. 哈夫曼树 和 树的带权路径长度

    树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和. 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积. 哈夫曼树是一种 ...

  7. wpl计算方法_C++二叉树计算带权路径长度(WPL)的算法

    题目 :二叉树的带权路径长度是二叉树中所有叶子结点的带权路径长度之和.给定二叉链表的存储的结点结构为 left | weight| right 存储的是叶子结点的非负权值.设计算法求二叉树的带权路径长 ...

  8. C++二叉树计算带权路径长度(WPL)的算法

    二叉树计算带权路径长度(WPL)的算法 更多内容请访问点击我的主页 题目 : 二叉树的带权路径长度是二叉树中所有叶子结点的带权路径长度之和.给定二叉链表的存储的结点结构为 left weight ri ...

  9. JAVA实现二叉树带权路径长度和_哈夫曼树的构建与最小带权路径长度

    注意:哈夫曼树并不唯一,但带权路径长度一定是相同的. 二叉树:每个结点最多含有两个子树的树称为二叉树. 定理:对于具有n个叶子结点的哈夫曼树,共有2n-1个结点. 哈夫曼树介绍 1哈夫曼树的定义 哈夫 ...

最新文章

  1. 开源项目贡献者_嘿新手开源贡献者:请写博客。
  2. JQuery中的queue()及dequeue()
  3. linux 反弹shell(一)文件描述符与重定向
  4. 003_如何创建CSS
  5. SparkSql官方文档中文翻译(java版本)
  6. IE浏览器网页无法缩放怎么办 解决IE浏览器网页无法缩放的方法
  7. vue-cli本地的一个websocket
  8. gp数据库迁移数据到mysql_greenplum数据迁移
  9. 【ElasticSearch】ElasticSearch 6 IK 同义词 配置
  10. matlab光束,matlab仿真光束的传输特性
  11. 如何将ImageRanger与外部存储一起使用NAS或USBUSB驱动器?
  12. 容斥原理模板(二进制表示)
  13. (十六)51单片机——红外遥控
  14. 如何使用Bootbox?
  15. 【目标检测】 YOLO
  16. python爬虫爬取必应壁纸
  17. 求助威纶通触摸屏与三菱PLC程序
  18. 【Android】【打开方式】Android11用其它应用打开微信文件
  19. 什么是云监控,云监控工具
  20. 解决:Error: geom_point requires the following missing aesthetics: y Run `rlang::last_error()`

热门文章

  1. Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
  2. 黑马程序员 Java 加强
  3. Java 8.if语句
  4. XV6陷入,中断和驱动程序
  5. HTML 中CSS 图像详解
  6. List集合和set集合
  7. mini_magick上传图片
  8. drupal 7在一个form新增或者修改一个字段
  9. 软考——(1)J2SE
  10. JavaScript 简介