* Definition for a binary tree node.
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
int rob(TreeNode* root) {
pair<int, int> res = dfs(root);
return max(res.first, res.second);
pair<int, int> dfs(TreeNode* root)
pair<int, int> res = {0, 0};
pair<int, int> left = dfs(root->left);
pair<int, int> right = dfs(root->right);
res.first = max(left.first, left.second) + max(right.first, right.second);
res.second = left.first + right.first + root->val;