class Solution {
public:
int answer = 0;
int findTilt(TreeNode* root) {
dfs(root);
return answer;
}
int dfs(TreeNode* node){
if (node == nullptr) return 0;
int left = dfs(node->left);
int right = dfs(node->right);
answer += abs(left-right);
return left+right+node->val;
}
};
현재 노드의 left, right 자식들의 각 합을 알 필요가 있기 때문에 bottom-up 방식으로 해결해야겠다고 생각했다. 따라서 현재 노드의 부모가 알 수 있도록 left+right+node->val을 반환 하였고 그 전에 tilt 값을 answer에 저장하였다.