技术标签: LeetCode
题目:
Given the root
of a binary tree, return the sum of every tree node's tilt.
The tilt of a tree node is the absolute difference between the sum of all left subtree node values and all right subtree node values. If a node does not have a left child, then the sum of the left subtree node values is treated as 0
. The rule is similar if there the node does not have a right child.
Example 1:
Input: root = [1,2,3] Output: 1 Explanation: Tilt of node 2 : |0-0| = 0 (no children) Tilt of node 3 : |0-0| = 0 (no children) Tile of node 1 : |2-3| = 1 (left subtree is just left child, so sum is 2; right subtree is just right child, so sum is 3) Sum of every tilt : 0 + 0 + 1 = 1
Example 2:
Input: root = [4,2,9,3,5,null,7] Output: 15 Explanation: Tilt of node 3 : |0-0| = 0 (no children) Tilt of node 5 : |0-0| = 0 (no children) Tilt of node 7 : |0-0| = 0 (no children) Tilt of node 2 : |3-5| = 2 (left subtree is just left child, so sum is 3; right subtree is just right child, so sum is 5) Tilt of node 9 : |0-7| = 7 (no left child, so sum is 0; right subtree is just right child, so sum is 7) Tilt of node 4 : |(3+5+2)-(9+7)| = |10-16| = 6 (left subtree values are 3, 5, and 2, which sums to 10; right subtree values are 9 and 7, which sums to 16) Sum of every tilt : 0 + 0 + 0 + 2 + 7 + 6 = 15
Example 3:
Input: root = [21,7,14,1,1,2,2,3,3] Output: 9
Constraints:
[0, 104]
.-1000 <= Node.val <= 1000
思路:
用一个外部变量记录sum的值,之后是常规的traverse,递归返回值应该为sum of left+sum of right+val本身。因为我们用外部变量记录sum,因此最后一层递归加上了root的根本身值也没关系,我们并不会用到最终递归的返回值。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int findTilt(TreeNode* root) {
if(!root)
return 0;
check(root);
return sum;
}
private:
int sum=0;
int check(TreeNode* root)
{
if(!root)
return 0;
int left=check(root->left);
int right =check(root->right);
sum+=abs(left-right);
return left+right+root->val;
}
};
Redis笔记一、Nosql概述1、为什么使用Nosql单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据库就放不下了数据的索引(B+ Tree),一个机器内存也存放不下访问量变大后(读写混合),一台服务器承受不住。Memcached(缓存) + Mysql + 垂直拆分(读写分离)网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用
很多SEO工作者希望能够了解国外SEO是什么状况,国外SEO工作者是怎么工作的,国外站长是如何做优化的。那么就必须参考国外SEO论坛、博客,很多国内站长及SEO工作者英文的水平直接浏览英文SEO论坛、博客还有些难度,其实可以通过Google Chrome 浏览器,或浏览器自动翻译插件浏览,下面给大家介绍一下国外SEO知名论坛、博客地址,英文SEO必备!第一名:Matt Cutts,...
借鉴倍福官方文档,结合自己的多次摸索出来的经验,整理出的TwinCAT3的安装资料,非常详细。
本文整理了近些年常用的小样本数据集,提供了数据集介绍,参考文献以及下载地址。我手头有资源的都已经上传至百度云盘,其他数据集也提供了官方的下载地址(有些可能需要翻墙)。最后还对各个数据集的情况做了一个简单的汇总。1.Omniglot Omniglot数据集是由来自50种不同语言的1,623个手写字符构成的,每个字符都有20个不同的笔迹,这就构成了一个样本类别极多(1623种),但每种类别的样本数量极少(20个)的小样本手写字符数据集。使用中通常选择1200种字符作为训练集,剩余的423种字符作为验证
$("body").on("mouseenter", 'td[data-field="rule_content_details"]', function(e) { // 鼠标移入事件 clearTimeout(t); // 清空定时器 t=setTimeout(function(){ // 延时操作 },300); }).on("mouseleave", 'td[data-field="rule_content_details"]', function(e) { //
表1-1简要对比了Hi3519AV100与Hi3559AV100在规格方面的差异,Hi3519AV100的具体规格请参见《Hi3519AV100 ultra-HD Mobile Camera SoC 用户指南》。
序列化框架性能对比(kryo、hessian、java、protostuff)简介:优点缺点Kryo速度快,序列化后体积小跨语言支持较复杂Hessian默认支持跨语言较慢Protostuff速度快,基于protobuf需静态编译Protostuff-Runtime无需静态编译,但序列化前需预先传入schema不支持无默认构造函数的类,反序列化时需用户自己初始化序列化后的对象,其只负责将该对象进行赋...
题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度O(1)的解法么?时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M解题思路:用两个指针指向头节点,遍历的时候,一个指针一次走两步,另外一个指针一次走一步。如果没有环,两指针不会相遇,否则会相遇。该问题比较简单,但难点在于怎样把时间控制在2秒内。多一个判断句,就会超出时间限制。所以要尽量减少判断语句,同时满足所有测试用例。public class So.
文件的读写添加删除操作import java.io.*;public abstract class DoFile {/** * @param args */public static void writeFile(String fileName,String text){ String mfileName="D:\\"+fileName+".txt"; //可自定义进行...
1.通过 r.t 表设计器(adzi140)建立表 完成2.azzi900建立程序代号(会生产唯一程序代号)完成3.azzi910建立作业代号(一个程序的代号可以被多个作业使用)完成4.通过设计器 - 规格(签出规格,生成前端界面)完成5.通过设计器 - 程序 (签出程序,根据规格自动生成后端代码)完成6.adzp168通过画面生成器 产生画面 完成7.通过设计器 - 规格(下载规格)完成8.r.q开窗,r.v校验带值(根据需求)完成9.通过设计器 - 程序 下载程序 完成
ubuntu的tmp目录下自己创建的文件每次重启后自动删除。可以修该/etc/default/rcS文件中的内容而改变为不自动删除。输入命令:vim /etc/default/rcS开始编辑将TMPTIME=0改为TMPTIME=-1,保存并退出即可。...
文章目录SummaryProblemSolutionReferenceSummaryI can open the Netmgr in the Xshell through Xmanager without any issue. There was problem to do so using Oracle user under xWindows. Resolved it by setting ...