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;
}
}
}
, 잘합니다 (트리 -이> 루트가 null, 그래서 그 if 문 안에 종료 아마 때문에),하지만 난 때와 두 번째를 삽입하고이 함수를 그대로두면 트리에는 첫 번째 노드 만 있습니다.
관련 정보를 제공하는 것을 잊어 버린 경우 알려주십시오.
투표에 가십 시요 : 검사로 코드의 오류를 찾아내는 낯선 사람을 찾는 것은 생산성이 떨어집니다. 디버거 또는 인쇄 문을 사용하여 문제를 식별 (또는 적어도 격리) 한 다음보다 구체적인 질문으로 다시 돌아와야합니다. –
나의 실수는, 내가 더 좁힐 수 있는지 알게 될 것이다. –