一道关于二叉树的题,这道题计算每一个结点,全部左子树和,全部右子树和,然后求差。将这个二叉树全部结点的tilt都相加,给出最终的结果。
class Solution {
public:
int findTilt(TreeNode* root)
{
int tilt = 0;
sum(root, tilt);
return tilt;
}
private:
int sum(TreeNode* node, int &tilt)
{
if (!node) return 0;
int left = sum(node->left, tilt);
int right = sum(node->right, tilt);
tilt += abs(left - right);
return node->val + left + right;
}
};