非递归二进制树插入()方法不起作用
non recursive binary tree insert() method not working
我已经写了一个二进制树代码,用于以非收回方法将元素插入其中。该代码无法按预期工作。无论我要调试多少次,似乎没有错,但是我遇到了错误的结果。我希望你们能提供帮助。预先感谢。
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()
条件下来知道这一点。我将上一篇文章修改为这个新问题。
node = ref->left;
你想要
ref->left = node;
且与Ref->右
我认为您错误地设置了要添加到引用的节点,而不是将左右引用设置为添加的节点。将node = ref->left
更改为ref->left = node
,同样为右侧。
相关文章:
- 基本加密和解密方法不起作用 C++ 11.
- 结构/方法不起作用
- 将字符数组设置为彼此相等的方法不起作用
- ConvertToReferencePoint 方法不起作用,获取作业参数的 NULL (HyperV 2016)
- 为什么方法不起作用?
- C boost :: bimap insert()方法不起作用
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 为什么这种交换方法不起作用
- Qt. 方法显示文本() 如果我在 QStyledItemDelegate 中定义了 paint() 方法不起作用
- 非递归二进制树插入()方法不起作用
- C++中的Friend方法不起作用
- 为什么这种删除文件夹中文件的方法不起作用?
- 二叉树递归插入方法不起作用
- CGI POST方法不起作用
- 为什么我的 pow 方法不起作用?
- 类方法不起作用
- 使用ctypes从Python调用C++方法不起作用
- C++虚拟方法不起作用
- 为什么用double&&初始化对象方法不起作用?
- 使用虚拟重写基类方法不起作用