总览
之后需要再好好看看/做做的题如下:
563. 二叉树的坡度
- 第一遍,playground测试用例结果错误
class Solution {
public:
int tilt, totalTilt;
int findTilt(TreeNode* root) {
if (!root) return 0;
tilt = abs(calSum(root->left) - calSum(root->right));
totalTilt += tilt;
return totalTilt;
}
int calSum(TreeNode* root) {
if (!root) return 0;
return calSum(root->left) + calSum(root->right) + root -> val;
}
};
因为你算tilt没递归呀笨蛋。。。你这样只算出来了根节点的tilt呀……
2. 第二遍,过了,我好憨
class Solution {
public:
int tilt, totalTilt;
int findTilt(TreeNode* root) {
if (!root) return 0;
tilt = abs(calSum(root->left) - calSum(root->right));//当前节点的tilt
totalTilt += tilt;
findTilt(root->left);
findTilt(root->right);
return totalTilt;
}
int calSum(TreeNode* root) {
if (!root) return 0;
return calSum(root->left) + calSum(root->right) + root -> val;
}
};