LeetCode----563
思路:
1.首先需要理解题意--->某颗二叉树的坡度等于所有结点的坡度之和,
结点的坡度等于左子树所有结点的值的和减去右子树的所有结点的值的和。
代码如下:
/**
* 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;
public int findTilt(TreeNode root) {
DFS(root);
return sum;
}
public int DFS(TreeNode node){
if(node == null){return 0;}
//递归求每个结点的做孩子的所有结点值的和
int left=DFS(node.left);
//求右孩子值的和
int right=DFS(node.right);
//坡度定义求和
sum+=Math.max(left-right,right-left);
//返回当前递归层次结点包括所有孩子的值的和,即---返回父结点的左或右结点的值的和
return left+right+node.val;
}
}