题目来源:
leetcode题目,网址:563. 二叉树的坡度 – 力扣(LeetCode)
解题思路:
遍历二叉树,计算各个节点的坡度,然后求和即可。
解题代码:
/**
* 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 {
public int findTilt(TreeNode root) {//节点数目可能为0;
int tilt[]=new int[1];
assistFindTilt(root,tilt);
return tilt[0];
}
public static int assistFindTilt(TreeNode root,int[] tilt){
if(root==null){
return 0;
}
int leftTreeSum=assistFindTilt(root.left,tilt);
int rightTreeSum=assistFindTilt(root.right,tilt);
tilt[0] += Math.abs(rightTreeSum-leftTreeSum);
return rightTreeSum+leftTreeSum+root.val;
}
}
总结:
官方题解给出了深度优先搜索解法。