Given the root of a binary tree, return the sum of every tree node’s tilt.
The tilt of a tree node is the absolute difference between the sum of all left subtree node values and all right subtree node values. If a node does not have a left child, then the sum of the left subtree node values is treated as 0. The rule is similar if there the node does not have a right child.

计算二叉树的每个节点倾斜度的和,倾斜度是指左子树节点值的和 减去 右子树节点值的和。
思路:
遍历每个节点的时候要两种信息,
一个是每个节点左子树和右子树节点值的差,也就是倾斜度,要把这些加起来。这个可以加在全局变量。
一个是左子树和右子树节点值的和,再加上节点本身求和,这是方便上级节点算倾斜度的。考虑这点,用树的后序遍历。
class Solution {
int sum = 0;
public int findTilt(TreeNode root) {
postTraversal(root);
return sum;
}
int postTraversal(TreeNode root){
if(root == null) return 0;
int left = postTraversal(root.left);
int right = postTraversal(root.right);
sum += Math.abs(left - right);
return left+right+root.val;
}
}
本文介绍了一种计算二叉树每个节点倾斜度之和的方法。倾斜度定义为左子树节点值之和与右子树节点值之和的绝对差。通过后序遍历实现递归计算,有效地解决了该问题。
1212

被折叠的 条评论
为什么被折叠?



