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
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 <iostream> 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.