Covered / Uncovered Nodes

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
long Solution::coveredNodes(TreeNode* A) {
    queue<TreeNode *> q;
    q.push(A);
    long long outer = 0, inner = 0;
    
    while(!q.empty()) {
        long long size = q.size();
        for(int i = 1; i <= size; i++) {
            TreeNode *frontNode = q.front();
            q.pop();
            if(i == 1 || i == size) 
                outer += frontNode->val;
            else
                inner += frontNode->val;
            if(frontNode->left)
                q.push(frontNode->left);
            if(frontNode->right)
                q.push(frontNode->right);
        }
    }
    return abs(outer - inner);
}

Time Complexity: O(n)O(n)​

Space Complexity: O(n)O(n)​

Convincing but WRONG solution

Last updated