#include <bits/stdc++.h>
using
namespace
std;
struct
Node {
int
key;
struct
Node *left, *right;
};
Node* newNode(
int
key)
{
Node* temp =
new
Node;
temp->key = key;
temp->left = temp->right = NULL;
return
(temp);
}
void
printMinMax(Node* root)
{
if
(root == NULL)
{
cout <<
"Tree is empty"
;
return
;
}
Node* current = root;
Node* pre;
int
max_value = INT_MIN;
int
min_value = INT_MAX;
while
(current != NULL)
{
if
(current->left == NULL)
{
max_value = max(max_value, current->key);
min_value = min(min_value, current->key);
current = current->right;
}
else
{
pre = current->left;
while
(pre->right != NULL && pre->right !=
current)
pre = pre->right;
if
(pre->right == NULL)
{
pre->right = current;
current = current->left;
}
else
{
pre->right = NULL;
max_value = max(max_value, current->key);
min_value = min(min_value, current->key);
current = current->right;
}
}
}
cout <<
"Max Value is : "
<< max_value << endl;
cout <<
"Min Value is : "
<< min_value << endl;
}
int
main()
{
Node* root = newNode(15);
root->left = newNode(19);
root->right = newNode(11);
root->right->left = newNode(25);
root->right->right = newNode(5);
root->right->left->left = newNode(17);
root->right->left->right = newNode(3);
root->right->right->left = newNode(23);
root->right->right->right = newNode(24);
printMinMax(root);
return
0;
}