Problem Statement:
Given a binary tree root node, you need to find the minimum and maximum value of the nodes.
Consider the image below:
Minimum value is 7 and maximum value is 30.
Solution:
We can solve this problem by traversing the tree and checking the value with min and max variables.
Initially assign minimum and maximum values as below:
int maximum = INT_MIN;
int minimum = INT_MAX;
Solution in C++
#include <iostream> #include <queue> #include <stack> using namespace std; // structure to hold binary tree node struct Node { int data; Node *left, *right; Node(int data) { this->data = data; this->left = this->right = nullptr; } }; int maximum = INT_MIN; int minimum = INT_MAX; void get_min_max_value(Node* node) { if (node == NULL) { return; } if (node->data > maximum) { maximum = node->data; } if (node->data < minimum) { minimum = node->data; } get_min_max_value(node->left); get_min_max_value(node->right); } int main() { Node* root = nullptr; /* Binary tree: 16 / \ / \ 10 25 / \ / \ / \ / \ 7 15 18 30 */ root = new Node(16); root->left = new Node(10); root->right = new Node(25); root->left->left = new Node(7); root->left->right = new Node(15); root->right->left = new Node(18); root->right->right = new Node(30); get_min_max_value(root); cout<<"Minimum value is = " <<minimum<<" maximum value is = "<<maximum<<endl; return 0; }
Output:
Minimum value is = 7 maximum value is = 30