Transform to Sum Tree

Transform to Sum Tree

Given a Binary Tree of size N , where each node can have positive or negative values. Convert this to a tree where each node contains the sum of the left and right sub trees of the original tree. The values of leaf nodes are changed to 0.


Approach:

The problem can be solved recursively with post-order traversal (left-right-root), as we need the values of child nodes before updating the current node.

?? View Full Code ??


Steps:

  • Use a recursive function to compute and update each node.
  • For each node, recursively calculate the sum of its left and right subtrees.
  • Store the original node value before updating.
  • Update the node’s value to the sum of the left and right subtrees.
  • Return the sum of the original node’s value plus the subtree sum (for parent nodes' calculations).
  • If a node is NULL, return 0.
  • For leaf nodes, update the node’s value to 0.

int solve(Node* node){
        
        if(node == NULL) return 0;
        
        int left = solve(node->left);
        int right = solve(node->right);
        
        int originalValue = node->data;
        
        node->data = left+right;
        
        return originalValue + node->data;

    }
    
    void toSumTree(Node *node)
    {
        solve(node);   
    }        

Time Complexity: O(N)

Space Complexity: O(N)

where N is number of nodes

?? GitHub Repo??



Anmol .

Student || 3??Codechef (Max rating -1629) || 5?? C++/Problem Solving Hackerrank ||Codeforces Max Rating -1166|| CP Enthusiast || Problem Solver & Daily Streak Gold??Codechef || 300+Codechef || 200+ Codeforces

3 个月

Interesting??

要查看或添加评论,请登录

Pranay Saini的更多文章

  • Maximum sum of nodes in Binary tree such that no two are adjacent

    Maximum sum of nodes in Binary tree such that no two are adjacent

    Given a binary tree with a value associated with each node, we need to choose a subset of these nodes such that sum of…

    2 条评论
  • Largest Subtree Sum

    Largest Subtree Sum

    Given a binary tree. The task is to find subtree with maximum sum in the tree and return its sum.

    2 条评论
  • Sum of Longest Blood Line of Tree

    Sum of Longest Blood Line of Tree

    Given a binary tree having n nodes. Find the sum of all nodes on the longest path from root to any leaf node.

  • Check Mirror Tree

    Check Mirror Tree

    Given two n-ary trees. Check if they are mirror images of each other or not.

    2 条评论
  • Duplicate Subtree

    Duplicate Subtree

    Given a binary tree, find out whether it contains a duplicate sub-tree of size two or more, or not. Note: Two same leaf…

    2 条评论
  • Leaves at Same Level

    Leaves at Same Level

    Given a binary tree with n nodes, determine whether all the leaf nodes are at the same level or not. Return true if all…

  • Sum Tree

    Sum Tree

    Given a Binary Tree. Check for the Sum Tree for every node except the leaf node.

  • Boundary Traversal of Binary Tree

    Boundary Traversal of Binary Tree

    Given a Binary Tree, find its Boundary Traversal. The traversal should be in the following order: Left boundary nodes:…

  • Diagonal Traversal of Binary Tree

    Diagonal Traversal of Binary Tree

    Consider lines of slope -1 passing between nodes. Given a Binary Tree, print all diagonal elements in a binary tree…

    2 条评论
  • Balanced Tree Check

    Balanced Tree Check

    A binary tree is height-balanced if, for every node in the tree, the difference in heights of the left and right…

    2 条评论

社区洞察

其他会员也浏览了