Product of all nodes in a Binary Tree

Given a Binary Tree. The task is to write a program to find the product of all of the nodes of the given binary tree. In the above binary tree,
Product = 15*10*20*812*16*25 = 974400000

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is to recursively:

• Find product of left subtree.
• Find product of right subtree.
• Mutiply the product of left and right subtrees with current node’s data and return.

Below is the implementation of the above approach:

C++

 // Program to print product of all // the nodes of a binary tree #include using namespace std;    // Binary Tree Node struct Node {     int key;     Node *left, *right; };    /* utility that allocates a new Node     with the given key */ Node* newNode(int key) {     Node* node = new Node;     node->key = key;     node->left = node->right = NULL;     return (node); }    // Function to find product of // all the nodes int productBT(Node* root) {     if (root == NULL)         return 1;        return (root->key * productBT(root->left) * productBT(root->right)); }    // Driver Code int main() {     // Binary Tree is:     //       1     //      /  \     //     2    3     //    / \  / \     //   4   5 6  7     //          \     //           8     Node* root = newNode(1);     root->left = newNode(2);     root->right = newNode(3);     root->left->left = newNode(4);     root->left->right = newNode(5);     root->right->left = newNode(6);     root->right->right = newNode(7);     root->right->left->right = newNode(8);        int prod = productBT(root);        cout << "Product of all the nodes is: "          << prod << endl;        return 0; }

Java

 // Java Program to print product of all // the nodes of a binary tree  import java.util.*; class solution {    // Binary Tree Node static class Node {     int key;     Node left, right; };    /* utility that allocates a new Node     with the given key */ static Node newNode(int key) {     Node node = new Node();     node.key = key;     node.left = node.right = null;     return (node); }    // Function to find product of // all the nodes static int productBT(Node root) {     if (root == null)         return 1;        return (root.key * productBT(root.left) * productBT(root.right)); }    // Driver Code public static void main(String args[]) {     // Binary Tree is:     //       1     //      /  \     //     2    3     //    / \  / \     //   4   5 6  7     //          \     //           8     Node root = newNode(1);     root.left = newNode(2);     root.right = newNode(3);     root.left.left = newNode(4);     root.left.right = newNode(5);     root.right.left = newNode(6);     root.right.right = newNode(7);     root.right.left.right = newNode(8);        int prod = productBT(root);        System.out.println( "Product of all the nodes is: "+prod);    } } //contributed by Arnab Kundu

Python3

 # Python3 Program to print product of  # all the nodes of a binary tree     # Binary Tree Node     """ utility that allocates a new Node  with the given key """ class newNode:         # Construct to create a new node      def __init__(self, key):          self.key = key         self.left = None         self.right = None            # Function to find product of  # all the nodes  def productBT( root) :        if (root == None):         return 1        return (root.key * productBT(root.left) *                         productBT(root.right))     # Driver Code  if __name__ == '__main__':            # Binary Tree is:      #     1      #     / \      #     2 3      # / \ / \      # 4 5 6 7      #         \      #         8      root = newNode(1)      root.left = newNode(2)      root.right = newNode(3)      root.left.left = newNode(4)      root.left.right = newNode(5)      root.right.left = newNode(6)      root.right.right = newNode(7)      root.right.left.right = newNode(8)         prod = productBT(root)         print("Product of all the nodes is:", prod)        # This code is contributed by # Shubham Singh(SHUBHAMSINGH10)

C#

 // C# Program to print product of all // the nodes of a binary tree  using System;    class GFG {        // Binary Tree Node     class Node     {         public int key;         public Node left, right;     };        /* utility that allocates a new Node      with the given key */     static Node newNode(int key)     {         Node node = new Node();         node.key = key;         node.left = node.right = null;         return (node);     }        // Function to find product of     // all the nodes     static int productBT(Node root)     {         if (root == null)             return 1;            return (root.key * productBT(root.left) *                         productBT(root.right));     }        // Driver Code     public static void Main()     {         // Binary Tree is:         //     1         //     / \         //     2 3         // / \ / \         // 4 5 6 7         //         \         //         8         Node root = newNode(1);         root.left = newNode(2);         root.right = newNode(3);         root.left.left = newNode(4);         root.left.right = newNode(5);         root.right.left = newNode(6);         root.right.right = newNode(7);         root.right.left.right = newNode(8);            int prod = productBT(root);            Console.WriteLine( "Product of all " +                         "the nodes is: " + prod);     } }    /* This code is contributed PrinciRaj1992 */

Output:

Product of all the nodes is: 40320

Time complexity : O(n)

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.