求每个节点的左子树的节点之和和右子树节点之和的差的绝对值
public int maxDepth(TreeNode root) {
if(root == null) return 0;
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return 1 + Math.max(left, right);
}
return
的东西,此时不是要求二叉树的高度,而是要求节点之和,而节点之和显然等于左子树的节点之和 + 右子树节点之和 + 当前节点的值class Solution {
private int sumDegree = 0;
private int calculate(TreeNode root) {
if(root == null) return 0;
int left = calculate(root.left);
int right = calculate(root.right);
sumDegree += Math.abs(left - right);
return left + right + root.val;
}
public int findTilt(TreeNode root) {
int allDegree = calculate(root);
return sumDegree;
}
}
class Solution:
sumDegree = 0
def findTilt(self, root: TreeNode) -> int:
def calculate(root):
if not root: return 0
left = calculate(root.left)
right = calculate(root.right)
self.sumDegree += abs(left - right)
return left + right + root.val
calculate(root)
return self.sumDegree
原文:https://www.cnblogs.com/MartinLwx/p/15099458.html