题目

https://leetcode-cn.com/problems/binary-tree-tilt/

题解

从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡度相加以获得最终结果。要找出任意结点的坡度,我们需要求出该结点的左子树上所有结点和以及其右子树上全部结点和的差值。

因此,为了找出解决方案,我们使用递归函数 process,在任何结点调用该函数,都会返回当前结点下面(包括其自身)的结点和。借助于任何结点的左右子结点的这一和值,我们可以直接获得该结点所对应的坡度。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {int sum = 0;public int findTilt(TreeNode root) {process(root);return sum;}public int process(TreeNode node) {if (node == null) return 0;int l = process(node.left);int r = process(node.right);sum += Math.abs(l - r); // 不能既作为返回值又相加,所以独立用sum存储return l + r + node.val; // 当前节点的节点和}
}

leetcode 563. 二叉树的坡度(Java版)相关推荐

  1. LeetCode 563. 二叉树的坡度(DFS)

    1. 题目 给定一个二叉树,计算整个树的坡度. 一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值.空结点的的坡度是0. 整个树的坡度就是其所有节点的坡度之和. 示例:输入 ...

  2. LeetCode 563二叉树的坡度-简单

    给定一个二叉树,计算 整个树 的坡度 . 一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 .如果没有左子树的话,左子树的节点之和为 0 :没有右子树的话也是一样. ...

  3. leetcode 563 二叉树的坡度

    https://leetcode-cn.com/problems/binary-tree-tilt/ 题目 给定一个二叉树,计算整个树的坡度 . 一个树的节点的坡度定义即为,该节点左子树的节点之和和右 ...

  4. 2022-4-2 Leetcode 563.二叉树的坡度

    和检查二叉树是否平衡的思路完全一样. 一个函数用来检查是否平衡,一个函数用来将这棵树无限细分. class Solution {public:int findTilt(TreeNode* root) ...

  5. LeetCode 391. 完美矩形(扫描线) / 318. 最大单词长度乘积 / 563. 二叉树的坡度

    391. 完美矩形 2021.11.16 每日一题 题目描述 给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形.这 ...

  6. 563. 二叉树的坡度

    题目 我的想法 从根节点开始,求出每个几点的度,然后累加.代码如下: # Definition for a binary tree node. class TreeNode:def __init__( ...

  7. leetcode -874 - 模拟行走机器人 - java版

    文章目录 题目 代码 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 < ...

  8. 解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/ 题解汇总:https://zhanglong.blo ...

  9. 实现二叉树的基本操作(Java版)

    近期研究了一下二叉树,试着用Java语言实现了二叉树的基本操作,下面分享一下实现代码: package com.sf.test;import java.util.ArrayDeque; import ...

最新文章

  1. RHEL 5 设置 YUM
  2. 怎么挪动_你真的懂iPhone上的小圆点怎么玩吗
  3. -Git Linux vi/vim 命令 按键 MD
  4. C++编译预处理:宏定义指令、文件包含指令和条件编译指令
  5. postgresq dur_DUR的完整形式是什么?
  6. 可以进行单元测试么_为什么程序员都讨厌写单元测试?有一个词叫“相爱相杀”!...
  7. 关于vue外卖项目的一些总结
  8. Revit 2011 二次开发之Ribbon
  9. RISC-V架构能否有效挑战ARM和英特尔?
  10. sql查询初学者指南_面向初学者SQL Server查询执行计划–聚集索引运算符
  11. 环境搭建-CentOS集群搭建
  12. 2019蓝桥杯B组:完全二叉树权值
  13. 美赛整理之偏微分方程的数值求解(一)
  14. OpenGL EGL GPU工作流程理解(十四)
  15. 编译安装httpd 2.4
  16. 美国大学计算机科学与物理,美国大学物理专业浅谈
  17. PPT图形的多种玩法(师从于珞珈老师)
  18. 博弈论中的简单合作博弈 C#实现
  19. Jmeter-界面功能介绍
  20. 服务器装了无线网卡失败,.NET Core Runtime安装失败0x80070005Error报错服务器原因

热门文章

  1. 牛客 - 车辆调度(dfs)
  2. CodeForces - 1110G Tree-Tac-Toe(博弈+构造)
  3. HDU - 3538 A sample Hamilton path(最短哈密顿路径+状压dp)
  4. html遮罩实例,给原生html中添加水印遮罩层的实现示例
  5. UVA - 1606 Amphiphilic Carbon Molecules
  6. Java笔记——Java代码块的执行顺序
  7. C++虚函数---我的理解
  8. live555 源码分析:播放启动
  9. 面向在线教育业务的流媒体分发演进
  10. 高效终端设备视觉系统开发与优化