2016-09-18 86 views
1

/*这是一个使用结构创建树的程序。如何解决此代码中用于创建树的运行时错误...?

#include<stdio.h> 

/树结构 用于创建树

struct tree{ 
    int data;     
    struct tree *left; 
    struct tree *right; 
    }; 

/功能在树中插入元件/

void insert(struct tree *bt,int data) 
{ 
    if(bt==NULL){ 
     bt=(struct tree*)malloc(sizeof(struct tree)); 
     bt->data=data; 
     bt->left=NULL; 
     bt->right=NULL; 
     } 
    else if(data<bt->data) 
     insert(&(bt->left),data); 
    else if(data>bt->data) 
     insert(&(bt->right),data); 

} 

/插入元件 调用函数插入。/

void main(){ 
    struct tree *bt=NULL; 
    insert(&bt,1); 
    insert(&bt,6);    
    insert(&bt,12);    
    insert(&bt,87); 
    inorder(&bt); 
} 

/中序遍历/ //函数的递归调用//

void inorder(struct tree *root){ 
    if(root!=NULL){ 
     inorder(root->left); 
     printf("%d",root->data);   
     inorder(root->right); 
    } 
} 

回答

0

这可能是因为一棵树包含一个树,其中包含一个树的指针,这包含一个树形指针,等等...(即使你没有初始化或“分配”任何东西,CPP编译器都很奇怪)

没有错误它给你,我不能做太多。

+0

你能给我一个正确的一段代码吗? – Akshansh

+0

尝试将引用设置为“NULL”,以便编译器不对其进行初始化。例如:struct tree * left = NULL;如果您向我提供运行时错误,我可能会多一点帮助。上面的解决方案修复了一个坏编译器的堆栈溢出错误。 –