Product of all leaf nodes of binary tree

Given a binary tree, find the product of all the leaf nodes.

Examples:

Input : 
        1
      /   \
     2     3
    / \   / \
   4   5 6   7
          \
           8
Output :
product = 4 * 5 * 8 * 7 = 1120

The idea is to traverse the tree in any fashion and check if the node is the leaf node or not. If the node is the leaf node, multiply node data to a variable prod used to store the products of leaf nodes.

Following is the implementation of above approach.

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find product of
// all leaf nodes of binary tree
#include <bits/stdc++.h>
using namespace std;
  
// struct binary tree node
struct Node {
    int data;
    Node *left, *right;
};
  
// return new node
Node* newNode(int data)
{
    Node* temp = new Node();
    temp->data = data;
    temp->left = temp->right = NULL;
    return temp;
}
  
// utility function which calculates
// product of all leaf nodes
void leafProduct(Node* root, int& prod)
{
    if (!root)
        return;
  
    // product root data to prod if
    // root is a leaf node
    if (!root->left && !root->right)
        prod *= root->data;
  
    // propagate recursively in left
    // and right subtree
    leafProduct(root->left, prod);
    leafProduct(root->right, prod);
}
  
// Driver program
int main()
{
  
    // contruct binary tree
    Node* root = newNode(1);
    root->left = newNode(2);
    root->left->left = newNode(4);
    root->left->right = newNode(5);
    root->right = newNode(3);
    root->right->right = newNode(7);
    root->right->left = newNode(6);
    root->right->left->right = newNode(8);
  
    // variable to store product of leaf nodes
    int prod = 1;
    leafProduct(root, prod);
    cout << prod << endl;
    return 0;
}

chevron_right


Output:

1120

Time Complexity : O(n), where n is the total number of nodes in the tree.



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.