Finding Minimum Depth of Binary Tree in C++

In this article, we will learn how to find the minimum depth of a binary tree in C++ with the help of the code example.

The minimum distance between the root node and the left node in a binary tree is called its minimum depth.

Below is a given given example:

Input:
         7
        / \
       3   5
      / \
     1   2
Output: The minimum depth of the given binary tree: 2
Exaplanation: 7 -> 5

Minimum Depth of Binary Tree in C++

We are going to solve this problem using a recursive approach.

1. At the very first, create a tree using struct.

2. After that, create a function minDepth and pass the root node as an argument.

  • Now check the base case where the tree has no element i.e. root == NULL.
  • Check whether the tree has only one element if true return 1.
  • Now transverse through the right subtree and left subtree.

3. Finally, return the minimum depth between the right subtree and left subtree.

Below is the complete code:

#include <bits/stdc++.h>
using namespace std;
struct Node{
    int data;
    struct Node *left;
    struct Node *right;
};
int minDepth(Node *root){
    if (root == NULL)
        return 0;
    
    if(root->left == NULL && root->right == NULL)
        return 1;
    
    if (!root->left)
    return minDepth(root->right)+1;

    if(!root->right)
    return minDepth(root->left)+1;

    return min(minDepth(root->left), minDepth(root->right))+1;
}
void inorder(Node* root){
    if (root == NULL)
    return;

    inorder(root->left);
    cout<<root->data<<" ";
    inorder(root->right);
}
Node *newNode(int data){
    Node *temp = new Node;
    temp->data = data;
    temp->left = temp->right = NULL;
    return temp;
}
int main(){
    Node *root = newNode(1);
    root->left = newNode(2);
    root->right = newNode(3);
    root->left->right = newNode(4);
    root->left->left = newNode(5);
    root->right->left = newNode(6);
    root->right->right = newNode(8);
    root->left->left->left = newNode(7);
    cout<<"The inorder of given binary tree: ";
    inorder(root);
    cout<<endl;
    cout<<"The minimum depth of the given binary tree is "<<minDepth(root);
    return 0;
}

Output

The inorder of given binary tree: 7 5 2 4 1 6 3 8 
The minimum depth of the given binary tree is 3

Exaplanation: 1 -> 2 -> 4 is one of the minimum depth.

Also, read

Leave a Reply

Your email address will not be published.