输入:一棵二叉树 root
要求:返回整棵树的总坡度
输出:一个整数
思路:“节点的坡度”定义为:| 左子树所有节点之和 - 右子树所有节点之和 |
整棵树的坡度 = 所有节点的坡度之和。
复杂度:
时间复杂度:O(n)
空间复杂度:O(h)
class Solution {
public:
int order(TreeNode* root, int& ans) {
if (!root) {
return 0;
}
int leftsum = order(root->left, ans);
int rightsum = order(root->right, ans);
ans += abs(rightsum - leftsum);
return leftsum + rightsum + root->val;
}
int findTilt(TreeNode* root) {
int ans = 0;
order(root, ans);
return ans;
}
};

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



