dimi67
asked on
binary tree insert C code
where is the error?
#include <stdio.h>
#include<stdlib.h>
typedef struct bnode{
int key;
struct bnode* left;
struct bnode* right;
}BNODE;
void printKeysReverse(BNODE* current);
void inorder(BNODE* current);
void insert(BNODE **root,int key);
int main(void){
BNODE* root=NULL;
insert(&root,27);
insert(&root,59);
insert(&root,21);
insert(&root,38);
insert(&root,54);
insert(&root,63);
insert(&root,8);
insert(&root,70);
insert(&root,15);
}
void insert(BNODE **root, int val){
BNODE *newnode;
newnode=(BNODE*)malloc(sizeof(BNODE));
newnode->right=NULL;
newnode->left=NULL;
if ((*root)==NULL){
*root=newnode;
(*root)->key=val;
return;
}
if (val<(*root)->key) insert((&root)->left,val);
else insert((&root)->right,val);
}//end
void inorder(BNODE *root){
if (root==NULL) return ;
inorder(root->left);
printf("%d ",root->key);
inorder(root->right);
}//end inorder
What's the symtom?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The problems specifically were...
I hope this helps.
-Rx.
I hope this helps.
-Rx.
Before: if (val<(*root)->key) insert((&root)->left,val);
After: if (val<(*root)->key) insert(&(*root)->left,val);
Before: else insert((&root)->right,val);
After: else insert(&(*root)->right,val);
ASKER
thanks! :-)
if condition which you have return is wrong
it should be
if (val<(*root)->key))
insert((&root)->left,val);
else
insert(&(*root)->left,val) ;
it should be
if (val<(*root)->key))
insert((&root)->left,val);
else
insert(&(*root)->left,val)