Cut Binary Tree

Image placeholder 9899Image placeholder 9899Image placeholder 9899

(This question has been seen in the interviews of the following companies: Facebook, Amazon, Google)

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;
        }



Get one-to-one training from Google Facebook engineers

Top-notch Professionals

Learn from Facebook and Google senior engineers interviewed 100+ candidates.
Most recent interview questions and system design topics gathered from aonecode alumnus.
One-to-one online classes. Get feedbacks from real interviewers.

Customized Private Class

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.