#include <iostream>
using namespace std;
struct Node {
int data;
Node* left;
Node* right;
Node(int value) : data(value), left(nullptr), right(nullptr) {}
};
int heightOfTree(Node* root) {
if (root == nullptr) {
return 0;
} else {
int leftHeight = heightOfTree(root->left);
int rightHeight = heightOfTree(root->right);
return max(leftHeight, rightHeight) + 1;
}
}
int main() {
// Example usage
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
cout << "Height of the tree: " << heightOfTree(root) << endl;
// Deallocate memory (not shown in the explanation)
// ... (code to delete the nodes and free memory)
return 0;
}