【发布时间】:2012-10-28 03:52:35
【问题描述】:
我编写了一个二叉树代码,用于以非递归方法将元素插入其中。该代码未按预期工作。无论我调试代码多少次,似乎都没有错,但我得到了错误的结果。我希望你们能提供帮助。提前致谢。
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 声明为全局变量,并在main() 中将其初始化为NULL。我通过将cout << 放在第一个if() 条件中来了解这一点。我将之前的帖子修改为这个新问题。
【问题讨论】:
-
某处的某些代码正在破坏根目录。在整个地方插入
cout << root << "\n";,看看它是否变回零。然后找到它发生的地方...... -
这是我的错误。对不起。每次我插入一个元素时,我都会在 main 中将 root 设为 null。谢谢
标签: c++ c data-structures binary-tree binary-search-tree