我写了一个二叉树代码,用于在非递归方法中插入元素。代码没有按预期工作。不管有多少次我调试代码,没有什么似乎是错的,但我得到错误的结果。我希望你们能帮忙。提前致谢。非递归二叉树插入()方法不起作用
void insert(int element){
if(root == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq));
node->ele = element;
node->left = NULL;
node->right = NULL;
root = node;
cout << root->ele << "\n";
}
else{
struct elemq *ref;
ref = root;
while(ref != NULL){
if(element <= ref->ele){
if(ref->left == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq));
node->ele = element;
node->left = NULL;
node->right = NULL;
ref->left = node;
break;
}
else{
ref = ref->left;
}
}
else if(element > ref->ele){
if(ref->right == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq));
node->ele = element;
node->left = NULL;
node->right = NULL;
ref->right = node;
break;
}
else{
ref = ref->right;
}
}
}
}
}
每次我试图插入一个元素,每个元素都被视为root
,不仅是第一次。所以,每一次,if(root == NULL)
的条件是true
。我将root
声明为全局变量,并将其初始化为NULL
,main()
。我通过将cout <<
置于第一个if()
的条件来了解这一点。我将之前的帖子修改为这个新问题。
神圣的缩进! ;) – goji
某处某处的代码是垃圾根。在整个地方插入'cout << root <<“\ n”;'看看它是否回到零。然后找到它发生的地方... – Yakk
它是我的错误。抱歉。每次我插入一个元素时,我都会将根设为null。谢谢 –