我創建了一個類二叉搜索樹。
但問題是,當我打印它崩潰的樹。
我認爲它可以在函數print()中進行無限遞歸。
爲什麼我不能打印二叉樹?
這裏是我的代碼
struct node{
node *l,*r;
int data;
};
class BinTree
{
private: node *root;
public:
BinTree(){ root=NULL; }
void add(int a){ add_node(a,root); };
void add_node(int a, node *rot)
{ node *curr; curr=rot;
if(curr==NULL)
{
curr=new node;
curr->data=a;
curr->l=NULL;
curr->r=NULL;
return;
}
if(a>=curr->data) curr=curr->r,add_node(a,curr);
if(a<curr->data) curr=curr->l,add_node(a,curr);
}
void print(){ inorder(root); }
void inorder(node *curr)
{
if(curr->l!=NULL) inorder(curr->l);
cout<<curr->data<<" ";
if(curr->r!=NULL) inorder(curr->r);
}
};
誰能幫助我?
至少肯定會在root爲NULL時崩潰 – onemach
我看到兩個問題:第一個是什麼讓你的程序崩潰,如果你在調試器中運行該程序會很明顯。另一個是你永遠不會爲你的樹添加節點,使用調試器來遍歷'add_node'來查看原因。 –