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

Time complexity : O(n)

My Personal Notes arrow_drop_up