563. 二叉树的坡度
作者:互联网
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/binary-tree-tilt/solution/er-cha-shu-de-po-du-by-leetcode-solution-7rha/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
深度优先算法,定义一个记录两个节点差值的和的变量ans,通过递归遍历树,直到找到最底层的点,再返回两个点的和(因为对于下层节点多余2的树来说,需要统计其左右子树的和的差值),直到最上层,通过左右子树各自的和,做减法,去绝对值。
求两数的绝对值方法:Math.abs(sumLeft - sumRight)
class Solution {
int ans = 0;
public int findTilt(TreeNode root) {
dfs(root);
return ans;
}
public int dfs(TreeNode node) {
if (node == null) {
return 0;
}
int sumLeft = dfs(node.left);
int sumRight = dfs(node.right);
ans += Math.abs(sumLeft - sumRight);
return sumLeft + sumRight + node.val;
}
}
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;
}
}
标签:node,right,TreeNode,val,坡度,int,563,二叉树,left 来源: https://blog.csdn.net/weixin_45799228/article/details/121429543