Interviews

Cut Binary Tree

user profile image
System made a post.

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


One-on-One Algorithm and Coding Training

One-on-One System Design Training

One-on-One Mock Interview

Get one-to-one training from Google Facebook engineers


Top-notch Professionals

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.


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.


Free Consultation

aonecoding@gmail.com