Reputation: 3
When passing "pointer to pointer" to a function getting segmentation fault.Code is generating Binary search tree through insert function. Insert function is getting pointer to root node and a key value which it inserts at correct position
#include<iostream>
#include<stdlib.h>
strong text
using namespace std;
struct node
{
int data;
struct node* left;
struct node* right;
};
void insert(struct node** node,int data)
{
if( *node == 0 )
{
(*node) = (struct node* ) malloc(sizeof(struct node));
(*node)->data = data;
(*node)->left = 0;
(*node)->right = 0;
}
else if(data < ((*node) -> data)){
insert((&((*node) -> left)),data);
}
else if(data > ((*node)->data)){
insert((&((*node)->right)),data);
}
}
void inordertreversal(struct node* node)
{
inordertreversal(node->left);
cout << node->data;
inordertreversal(node->right);
}
int main()
{
struct node *root = 0;
insert(&root,10);
insert(&root,6);
inordertreversal(root);
return 0;
}
Help much appreciated
Upvotes: 0
Views: 280
Reputation: 21817
Check next nodes everytime:
void inordertreversal(struct node* node)
{
if (node->left)
inordertreversal(node->left);
cout << node->data;
if (node->right)
inordertreversal(node->right);
}
After this:
$ g++ example.c -o example && ./example
6
10
Upvotes: 1