当前位置: 首页 > news >正文

深度优先搜索LeetCode979. 在二叉树中分配硬币

给你一个有 n 个结点的二叉树的根结点 root ,其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。

在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到子结点,或者从子结点移动到父结点。

返回使每个结点上 只有 一枚硬币所需的 最少 移动次数。

每个硬币移动一次就会经过一条边, 原问题可用转换为, 所有边被经过的次数之和。

二叉树中每一条边会连接一个子树,这个子树多的硬币会经过这条边,少的硬币会从其他地方运到该子树。

所以每个边被经过的次数,就是该边对应的子树中  节点个数  和  金币个数之差  的绝对值。

可以使用dfs来做。

vector<int>dfs(node *root):表示以root为根节点的树中 节点个数 和 金币个数 ,v[0]表示节点个数,v[1]表示金币个数。

vector<int>dfs(root):

  vector<int>v,left,right;

       if(root->left) 

             left  = dfs (root->left);res += abs(left[0]-left[1]); 

      if(root->right)

             right  = dfs (root->right); res += abs(right[0]-right[1]);

      v[0]=left[0]+right[0]+1;

      v[1]=left[1]+right[1]+root->val;

     return v;  

       

 

class Solution {
public: int res=0;vector<int>dfs(TreeNode *root){vector<int>v(2,0);vector<int>left(2,0);vector<int>right(2,0); if(root->left){left = dfs(root->left);}if(root->right){right = dfs(root->right); }res += abs(left[0]-left[1]);res += abs(right[0]-right[1]);v[0]=left[0]+right[0]+1;v[1]=left[1]+right[1]+root->val;return v;}int distributeCoins(TreeNode* root) {dfs(root);return res;}
};

相关文章:

深度优先搜索LeetCode979. 在二叉树中分配硬币

给你一个有 n 个结点的二叉树的根结点 root &#xff0c;其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到…...

C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能&#xff0c;还是比较实用的。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 时间戳转换 」功能&#xff0c;而且实现点击按钮后文字进行变…...

Linux 5.15安全特性之ARM64 PAC

ARM64 PAC&#xff08;Pointer Authentication Code&#xff09;机制是ARM架构中引入的一种安全特性&#xff0c;旨在提供指针的完整性和安全性保护。它通过在指针中插入一段额外的代码进行签名&#xff0c;以验证指针的完整性&#xff0c;从而抵御缓冲区溢出和代码注入等攻击。…...

同旺科技 分布式数字温度传感器

内附链接 1、数字温度传感器 主要特性有&#xff1a; ● 支持PT100 / PT1000 两种铂电阻&#xff1b; ● 支持 2线 / 3线 / 4线 制接线方式&#xff1b; ● 支持5V&#xff5e;17V DC电源供电&#xff1b; ● 支持电源反接保护&#xff1b; ● 支持通讯波特率1200bps、2…...

状态空间的定义

状态空间是描述一个系统所有可能状态的集合。在系统理论、控制论、计算机科学、强化学习等领域&#xff0c;状态空间是一种常见的概念。 状态空间框架是一种用于描述和分析系统的方法&#xff0c;它包括系统的状态、状态之间的转移关系以及与状态相关的行为。下面详细解释状态…...

数据挖掘实战-基于word2vec的短文本情感分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

大数据面试总结

1、冒泡排序、选择排序 2、二分查找 3、 hashmap和hashtable的区别&#xff1f;hashmap的底层实现原理&#xff1f; a、hashtable和hashmap的区别&#xff1a; 1、hashtable是线程安全的&#xff0c;会在每一个方法中都添加方法synchronize&#xff08;同步机制&#xff09…...

利大于弊:物联网技术对电子商务渠道的影响

For Better or For Worse: Impacts of IoT Technology in e-Commerce Channel 物联网技术使用传感器和其他联网设备来手机和共享数据&#xff0c;并且被视为一种可以为供应链成员带来巨大的机会的突破性技术。本文的研究背景是&#xff1a;一个提供物联网基础设备的电子商务平…...

Python 元组详解(tuple)

文章目录 1 概述1.1 性质1.2 下标1.3 切片 2 常用方法2.1 访问&#xff1a;迭代、根据下标2.2 删除&#xff1a;del2.3 运算符&#xff1a;、*2.4 计算元组中元素个数&#xff1a;len()2.5 返回元组中元素最大值&#xff1a;max()2.6 返回元组中元素最小值&#xff1a;min()2.7…...

Redis部署-主从模式

目录 单点问题 主从模式 解析主从模式 配置redis主从模式 info replication命令查看复制相关的状态 断开复制关系 安全性 只读 传输延迟 拓扑结构 数据同步psync replicationid offset psync运行流程 全量复制流程 无硬盘模式 部分复制流程 积压缓冲区 实时复…...

全栈冲刺 之 一天速成MySQL

一、为什么使用数据库 数据储存在哪里&#xff1f; 硬盘、网盘、U盘、光盘、内存&#xff08;临时存储&#xff09; 数据持久化 使用文件来进行存储&#xff0c;数据库也是一种文件&#xff0c;像excel &#xff0c;xml 这些都可以进行数据的存储&#xff0c;但大量数据操作…...

服务器运行train.py报错解决

在服务器配置完虚拟环境以及安装完各种所需库后&#xff0c;发现报错Traceback (most recent call last): File "/root/yolov5-master/yolov5-master/train.py", line 48, in <module> import val as validate # for end-of-epoch mAP File "/root/yolov5…...

Flutter开发type ‘Future<int>‘ is not a subtype of type ‘int‘ in type cast错误

文章目录 问题描述错误源码 问题分析解决方法修改后的代码 问题描述 今天有个同事调试flutter程序时报错&#xff0c;问我怎么解决&#xff0c;程序运行时报如下错误&#xff1a; type ‘Future’ is not a subtype of type ‘int’ in type cast 错误源码 int order Databas…...

Nginx(十二) gzip gzip_static sendfile directio aio 组合使用测试(2)

测试10&#xff1a;开启gzip、sendfile、aio、directio1m&#xff0c;关闭gzip_static&#xff0c;请求/index.js {"time_iso8601":"2023-11-30T17:20:5508:00","request_uri":"/index.js","status":"200","…...

hls实现播放m3u8视频将视频流进行切片 HLS.js简介

github官网GitHub - video-dev/hls.js: HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.HLS.js is a JavaScript library that plays HLS in browsers with support for MSE. - GitHub - video-dev/hls.js: HLS.js is a JavaScript library …...

Ubuntu20.04部署TVM流程及编译优化模型示例

前言&#xff1a;记录自己安装TVM的流程&#xff0c;以及一个简单的利用TVM编译模型并执行的示例。 1&#xff0c;官网下载TVM源码 git clone --recursive https://github.com/apache/tvmgit submodule init git submodule update顺便完成准备工作&#xff0c;比如升级cmake版本…...

华为OD机试真题-两个字符串间的最短路径问题-2023年OD统一考试(C卷)

题目描述: 给定两个字符串,分别为字符串A与字符串B。例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0, 0),终点为(m, n),水平与垂直的每一条边距离为1,映射成坐标系如下图。 从原点(0, 0)到(0, A)为水平边,距离为1,从(0, A)到(A, C)为垂…...

python try-except

相比于直接raise ValueError&#xff0c;使用try-except可以使程序在发生异常后仍然能够运行。 在try的部分中&#xff0c;当遇到第一个Error&#xff0c;就跳转到except中寻找对应类型的error&#xff0c;后续代码不再执行&#xff0c;如果try中有多个Error&#xff0c;注意顺…...

flutter开发实战-ValueListenableBuilder实现局部刷新功能

flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中&#xff0c;点击按钮更新counter后&#xff0c;通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候&#xff0c;通过setState就不太合适了&#xff0c;这就需要进行…...

通过时间交织技术扩展ADC采样速率的简要原理

前言 数据采集是将自然界中存在的模拟信号通过模数转换器&#xff08;ADC&#xff09;转换成数字信号&#xff0c;再对该数字信号进行相应的接收和处理。数据采集系统作为数据采集的手段&#xff0c;在移动通信、图向采集、无线电等领域有重要作用。随着电子信息技术的飞速发展…...

Cursor编辑器深度美化:CSS注入与动态特效实现全解析

1. 项目概述&#xff1a;当代码编辑器拥有了“皮肤”与“特效”如果你和我一样&#xff0c;每天有超过8小时的时间是在代码编辑器里度过的&#xff0c;那么你一定理解一个顺眼、顺手、甚至有点“酷”的编辑环境意味着什么。它不仅仅是生产力的工具&#xff0c;更是我们开发者思…...

基于CircuitPython与BLE构建多探头无线温度监测系统

1. 项目概述&#xff1a;一个无线温度监控的“瑞士军刀” 如果你和我一样&#xff0c;喜欢在周末慢烤一块牛排&#xff0c;或者沉迷于培养天然酵母做面包&#xff0c;那你一定理解同时盯着好几个温度计的烦恼。厨房里烟雾缭绕&#xff0c;烤箱里正烤着东西&#xff0c;发酵箱里…...

高性能云端GPU推荐,满足深度学习全场景需求

本文以安诺其集团旗下专业GPU算力平台“智星云”为样本&#xff0c;从其技术架构、全系型号定价、主流平台对比、全场景适配四个维度展开&#xff0c;聚焦一个核心问题&#xff1a;在算力价格全线上涨的2026年&#xff0c;高性能深度学习任务如何用合理的预算匹配最合适的GPU方…...

在多轮对话任务中实测 Taotoken 路由策略对响应成功率的影响

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在多轮对话任务中实测 Taotoken 路由策略对响应成功率的影响 1. 测试背景与场景设定 在开发需要长时间连续交互的对话型应用时&am…...

3分钟快速上手:用MoneyPrinterTurbo一键生成AI短视频的完整指南

3分钟快速上手&#xff1a;用MoneyPrinterTurbo一键生成AI短视频的完整指南 【免费下载链接】MoneyPrinterTurbo 利用AI大模型&#xff0c;一键生成高清短视频 Generate short videos with one click using AI LLM. 项目地址: https://gitcode.com/GitHub_Trending/mo/MoneyP…...

NotebookLM辅助CRISPR靶点筛选实操:从NCBI SRA原始数据到脱靶风险摘要,限时开放实验日志包

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM生物学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具&#xff0c;专为科研人员设计&#xff0c;其核心能力在于对私有文档&#xff08;如 PDF、TXT&#xff09;进行深度语…...

保姆级教程:用Docker部署Jenkins时,如何搞定Agent节点的50000端口映射(附避坑点)

深度解析Docker化Jenkins部署&#xff1a;50000端口映射全攻略与实战避坑指南 Jenkins作为持续集成领域的标杆工具&#xff0c;其容器化部署已成为现代DevOps实践的标配。但当Master节点运行在Docker环境中时&#xff0c;Agent节点连接失败的场景屡见不鲜——其中80%的问题根源…...

车载网络测试演进:从CAN总线到TSN与SOA的实战解析

1. 项目概述&#xff1a;一场关于“神经”与“体检”的进化史几年前&#xff0c;我和几个同行在路边摊就着麻小和扎啤&#xff0c;聊起车载以太网测试&#xff0c;那时它还是个新鲜玩意儿&#xff0c;大家讨论的焦点更多是“要不要做”和“怎么做”。几年过去&#xff0c;再回头…...

为内部工具集成AI能力时下载Taotoken作为统一接口层的方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部工具集成AI能力时采用Taotoken作为统一接口层的方案 在为企业内部工具&#xff08;如数据分析平台、客服辅助系统或内容生成…...

终极指南:Seal中Kotlin协程上下文组合的实用技巧

终极指南&#xff1a;Seal中Kotlin协程上下文组合的实用技巧 【免费下载链接】Seal &#x1f9ad; Video/Audio Downloader for Android, based on yt-dlp 项目地址: https://gitcode.com/gh_mirrors/se/Seal Seal是一款基于yt-dlp的Android音视频下载器&#xff0c;在其…...