Product of all leaf nodes of binary tree

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


Input : 
      /   \
     2     3
    / \   / \
   4   5 6   7
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.





// 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)
    // 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;




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 or mail your article to 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.