Leetcode563.Binary Tree Tilt二叉樹的坡度
阿新 • • 發佈:2018-11-06
給定一個二叉樹,計算整個樹的坡度。
一個樹的節點的坡度定義即為,該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是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 == NULL) return 0; return abs(GetSum(root ->left) - GetSum(root ->right)) + findTilt(root ->left) + findTilt(root ->right); } int GetSum(TreeNode* root) { if(root == NULL) return 0; return root ->val + GetSum(root ->left) + GetSum(root ->right); } };