我创建了一个类二叉搜索树。
但问题是,当我打印它崩溃的树。
我认为它可以在函数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'来查看原因。 –