Give a binary tree, find if it's possible to cut the tree into two halves of equal sum. You can only cut one edge.

Solution:

```
public boolean cutTree(TreeNode root) {
if(root == null) {
return false;
}
List
``` sumArr = new ArrayList<>();
int sum = subTreeSum(root, sumArr);
if ((sum & 1) == 0) {
for (int i = 0; i < sumArr.size() - 1; i++) {
if (sumArr.get(i) == (sum >> 1)) {
return true;
}
}
}
return false;
}
public int subTreeSum(TreeNode node, List sumArr) {
int result = node.val;
if(node.left != null) {
result += subTreeSum(node.left);
}
if(node.right != null) {
result += subTreeSum(node.right);
}
sumArr.add(result);
return result;
}

Learn from Facebook, Google, Uber senior engineers interviewed 100+ candidates.aonecode.com

Most recent interview questions and system design topics gathered from aonecode alumnus.

One-to-one online classes. Get feedbacks from real interviewers.

Already a coding expert? - Advance straight to hard interview topics of your interest.

New to the ground? - Develop basic coding skills with your own designated mentor.

Days before
interview? - Focus on most important problems in target company question bank.