和检查二叉树是否平衡的思路完全一样。
一个函数用来检查是否平衡,一个函数用来将这棵树无限细分。
class Solution {
public:
int findTilt(TreeNode* root) {
if(!root)
return 0;
return findTilt(root->right) + findTilt(root->left) + abs(getSum(root->right) - getSum(root->left));
}
int getSum(TreeNode*root){
if(!root)
return 0;
return getSum(root->right) + getSum(root->left) + root->val;
}
};