# 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)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

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.