Skip to content

Instantly share code, notes, and snippets.

@cixuuz
Created August 28, 2017 03:07
Show Gist options
  • Save cixuuz/7383d3a173c0c7e572158bbe4225055d to your computer and use it in GitHub Desktop.
Save cixuuz/7383d3a173c0c7e572158bbe4225055d to your computer and use it in GitHub Desktop.
[663. Equal Tree Partition] #leetcode
class Solution {
public boolean checkEqualTree(TreeNode root) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
int sum = subtreeSum(root, map);
if (sum == 0) return map.getOrDefault(sum, 0) > 1;
return sum%2 == 0 && map.containsKey(sum/2);
}
private int subtreeSum(TreeNode node, Map<Integer, Integer> map) {
if ( node == null ) return 0;
int cur = node.val + subtreeSum(node.left, map) + subtreeSum(node.right, map);
map.put(cur, map.getOrDefault(cur, 0) + 1);
return cur;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment