0
用BST做一个项目,我的插入函数中有一个逻辑错误,似乎找不到它。二进制搜索树:在插入函数中丢失指针
插入功能:
int bst_insert (bst_t *tree, bst_key_t key)
{
bst_node_t *node, *temp_node;
if(tree == NULL) {
printf("Invalid tree pointer.\n");
return;
}
if(tree->root == NULL) {
node = (bst_node_t *)malloc(sizeof(bst_node_t));
node->left = node->right = NULL;
node->key = key;
tree->root = node;
return 1;
}
temp_node = tree->root;
while(1) {
if(temp_node == NULL) {
node = (bst_node_t *)malloc(sizeof(bst_node_t));
node->left = node->right = NULL;
node->key = key;
temp_node = node;
return 1;
}
if(temp_node->key == key) {
temp_node->data_ptr = data;
return 0;
} else if(key < temp_node->key) {
temp_node = temp_node->left;
} else if(temp_node->key < key) {
temp_node = temp_node->right;
}
}
}
在使用这个功能,插入一个节点工作得很好(大概是因为树形>根是空的,所以它退出,如果语句中),但是当我尝试插入第二个并离开此功能,树中只有第一个节点。
如果我忘记提供任何相关信息,请告诉我。
投票结束:要求陌生人通过检查发现代码中的错误并不是富有成效的。您应该通过使用调试器或打印语句来识别(或至少隔离)问题,然后返回一个更具体的问题。 – 2012-03-16 22:59:11
我的错误,我会看看我是否可以缩小范围。 – 2012-03-16 23:17:43