給定一個二叉樹,計算整個樹的坡度。
一個樹的節點的坡度定義即為,該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。
整個樹的坡度就是其所有節點的坡度之和。
示例:
輸入: 1/ \2 3 輸出: 1 解釋: 結點的坡度 2 : 0 結點的坡度 3 : 0 結點的坡度 1 : |2-3| = 1 樹的坡度 : 0 + 0 + 1 = 1
注意:
- 任何子樹的結點的和不會超過32位整數的范圍。
- 坡度的值不會超過32位整數的范圍。
class Solution {
public:int findTilt(TreeNode* root) {if(!root) return 0;int res = 0;dfs(root, res);return res; }int dfs(TreeNode *root, int &res){if(!root) return 0;int l = dfs(root->left, res);int r = dfs(root->right, res);res += abs(l - r);return root->val + r + l;}
};
?