Using recursion I am trying to find height of tree but the output seems wrong. Any errors?
#include <iostream>
struct node{
int data;
node* left, *right;
};
node* getNode(int item){
node* new_node = new node;
new_node->data = item;
new_node->left = new_node->right = nullptr;
return new_node;
}
node* insert(node* root, int item){
if(root == nullptr){
root = getNode(item);
}
else if(item < root->data){
root->left = insert(root->left, item);
}
else if(item > root->data){
root->right = insert(root->right, item);
}
return root;
}
int height(node* root){
if(root == nullptr){
return 0;
}
else{
return 1+std::max(height(root->left), height(root->right));
}
}
int main()
{
node* root;
root = insert(root, 40);
root = insert(root, 10);
root = insert(root, 20);
root = insert(root, 80);
root = insert(root, 30);
root = insert(root, 1);
std::cout << "\nheight of Tree: " << height(root);
return 0;
}
Tree should have height 3 (if i am not wrong) but its showing 4.
I am using GNU GCC compiler with Code::Blocks IDE it works there,
But when I am running same code on Programiz c++ online compiler it shows Segmentation fault so maybe the I am doing something wrong.
Regards