首页 > 其他分享 >考研数据结构——每日一题[WPL]

考研数据结构——每日一题[WPL]

时间:2023-08-01 22:01:19浏览次数:42  
标签:结点 null TreeNode WPL 二叉树 数据结构 root 考研

3766. 二叉树的带权路径长度

二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和,也就是每个叶结点的深度与权值之积的总和。

给定一棵二叉树 T,请你计算并输出它的 WPL。

注意,根节点的深度为 0。

样例
输入:二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]如下图所示:
    8
   / \
  12  2
     / \
    6   4

输出:32

数据范围 二叉树结点数量不超过 1000。 每个结点的权值均为不超过 100 的非负整数。

(WPL)是二叉树中所有叶结点的带权路径长度之和,也就是每个叶结点的深度与权值之积的总和WPL : ∑ 叶子结点的权值 * 深度

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int dfs(TreeNode* root, int depth) {
        if (!root) return 0;//为空, 值为0 
        if (!root->left && !root->right) return root->val * depth;//叶子节点返回对应的WPL 
        return dfs(root->left, depth + 1) + dfs(root->right, depth + 1);//每次往下递归一层 depth++ 
    }//判断完每层情况左右递归下一层,加和左右递归值得WPL

    int pathSum(TreeNode* root) {
        return dfs(root, 0);
    }
};

标签:结点,null,TreeNode,WPL,二叉树,数据结构,root,考研
From: https://blog.51cto.com/u_15623277/6929090

相关文章

  • 2017年考研英语二作文真题
      Asisshownintheabovechart,from2013to2015boththenumberofvistorsandmuseumsinourcountryhasincreased.Whataccountsfortherapidgrowthofmuseumvisitors?Iguessthereareprimarilytworeasons.Ontheonehand,asoureconomyisth......
  • freemeker 遍历map嵌套list数据结构
    遍历嵌套数据结构渲染map中value是list的内容<#ifnodes??&&(nodes?size>0)>【节点明细】<#listnodes?keysasalarmLevel>${alarmLevel+":"}<#if(nodes[alarmLevel])??><#list(nodes[alarmLevel])asnode>${node.nodeNo}<#sep>,&......
  • 数据结构(一)
    并查集原始版第一步先初始化intf[N];inlinevoidinit(intn){for(inti=1;i<=n;i++)fa[i]=i;}假如有编号1,2,3,...,n,n个元素,我们用一个数组fa[]来储存每个元素的父节点(因为每个元素有且只有一个父节点,所以这是可行的),一开始都将父节点设为自己第二步查......
  • 【数据结构】vector用法
    1.初始化:vector<类型>标识符vector<类型>标识符(最大容量)vector<类型>标识符(最大容量,初始所有值)inti[5]={1,2,3,4,5}vector<类型>vi(i,i+2);//得到i索引值为3以后的值vector<vector<int>>v;二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过2.常......
  • Java面试题 P28:数据库篇:MySql篇-MySql优化-索引-什么是索引?索引的底层数据结构是什么?
    什么是索引:索引(index)是帮助MySql高效获取数据的数据结构(有序)。在数据之外,数据库还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 ......
  • 数据结构与算法(三):单向链表
    链表定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑是通过链表种的指针链接次序实现的。链表由一系列节点组成,每个节点包括两部分:一个是存储数据元素的数据域,一个是存储下一个节点地址的指针域。单向链表从头节点(也可以没有头节点)开始,指针指向下一个节点的......
  • 线性数据结构和 STL
    vector容器(container)定义及头文件引入定义:一个可变长数组头文件:#include<vector>常用变量定义及函数解析end():尾后迭代器。push_back(x):在末端插入元素x(自动扩容)。构造函数一个参数:建立长度为n的数组:vector<int>a(n);两个参数:建立长度为n,每个元素的值均为......
  • 基础树形数据结构
    基础树形数据结构0.前言某个MXY问我为什么要讲树形数据结构。原因就是因为它复杂码量大可以装逼,还可以出一点毒瘤题,最重要的是我第一个学的难的知识就是这个能对于修改和查询的优化。下面是四个典型数据结构时间复杂度的比较↓数组前缀和线段树傻子社长树状数组......
  • Map和Object:JS如何根据需求选择正确的键值对数据结构
    Map和Object都是JavaScript中常用的数据结构,它们都可以用来存储键值对(key-valuepairs)。但是,它们之间也有一些重要的区别,了解这些区别可以帮助我们选择更合适的数据结构来满足我们的需求。公众号:Code程序人生,个人网站:https://creatorblog.cnObject的特点Object是JavaScript中最基本......
  • 【个人模板封装】树套树、高维数据结构
    前言这是我个人使用的一些模板封装,限于个人能力,可能存在诸多不足与漏洞,在未加测试直接使用前请务必小心谨慎。更新可能会滞后于我本地的文档,如有疑问或者催更之类的可以在评论区留言。全文模板测试均基于以下版本信息,请留意版本兼容问题。Windows,64bitG++(ISOC++20)stack......