Description:
Given a binary tree, return the tilt of the whole tree.
The tilt of a tree node is defined as the absolute difference between the sum of all >left subtree node values and the sum of all right subtree node values. Null node >has tilt 0.
The tilt of the whole tree is defined as the sum of all nodes’ tilt.
水题一道,按照题意算一下左右子树的和然后做差,递归处理一下就算完了。只不过这样的时间复杂度较大,效率不是很高。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int findTilt(TreeNode* root) {
if (root == NULL) return 0;
return abs(findSum(root->right) - findSum(root->left)) + findTilt(root->left) + findTilt(root->right);
}
int findSum(TreeNode* root) {
if (root == NULL) return 0;
return findSum(root->left) + root->val + findSum(root->right);
}
};