DDSA Solutions

Sum Tree

Time: O(n)
Space: O(h)
Advertisement

Intuition

Check if binary tree is a Sum Tree (each node = sum of all nodes in left and right subtrees).

Algorithm

  1. 1For each node: compute subtree sum. If node.val == leftSum + rightSum: continue. Else false.

Common Pitfalls

  • Post-order DFS. Return subtree sum. At each node: check val == left_sum + right_sum.
Sum Tree.java
Java
// Approach: DFS. Verify each node = sum of all values in its left and right subtrees.
// Time: O(n) Space: O(h)
class Node {
    int data;
    Node left, right;

    Node(int item) {
        data = item;
        left = right = null;
    }
}

class Solution {
    boolean ans = true;

    boolean isSumTree(Node root) {
        solve(root);
        return ans;
    }

    int solve(Node root) {
        if (root == null)
            return 0;

        int left = solve(root.left);
        int right = solve(root.right);

        if ((root.left != null || root.right != null) && left + right != root.data)
            ans = false;

        return root.data + left + right;
    }
}
Advertisement
Was this solution helpful?