现有一棵n个结点的树(结点编号为从0到n-1,根结点为0号结点),每个结点有各自的权值w。
求这棵树的带权路径长度。

解题思路:每个节点存储weight和height值。
然后利用遍历,当遍历到叶子节点时候,sumweight加上当前节点的带权路径值。
完整代码如下:
- #include
- #include
- using namespace std;
-
- struct node{
- int height = 0;
- int weight;
- vector<int> child;
- } nodes[51];
- bool flag = false;
- int sumweight = 0;
-
- void PreOrderTraverse(int root){
- if(root == -1){
- return ;
- }
- if(nodes[root].child.size()==0){
- sumweight += nodes[root].weight*nodes[root].height;
- }
- for(int i=0;i
size();i++){ - nodes[nodes[root].child[i]].height = nodes[root].height+1;
- PreOrderTraverse(nodes[root].child[i]);
- }
- }
-
- int main(){
- int n;
- cin>>n;
- for(int i=0;i
- cin>>nodes[i].weight;
- }
- for(int i=0;i
- int k;
- cin>>k;
- int temp;
- for(int j=0;j
- cin>>temp;
- nodes[i].child.push_back(temp);
- }
- }
- PreOrderTraverse(0);
- cout<
- return 0;
- }
-
相关阅读:
计算机毕业设计SSM电影分享网站【附源码数据库】
golang基础复合类型—map
NextJS开发:shadcn/ui中Button组件扩展增加图标
Hbase基本操作
Java面试题火了:这可能是历史上最简单的一道面试题了
java-php-net-python-校园后勤计算机毕业设计程序
中国电子云-隐私计算-云原生安全可信计算,物理-硬件-系统-云产品-云平台,数据安全防护
ssm+vue+elementUI 基于微信小程序的游戏美术外包管理信息系统-#毕业设计
类和对象下
BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)
-
原文地址:https://blog.csdn.net/u011708235/article/details/134492325