필자는 필자의 경우에는 작동하지 않지만 새로운 노드를 반복적으로 추가하는 데 필요한 코드를 찾았습니다. 에서반복적으로 새 노드를 이진 트리에 추가, 루트 덮어 쓰기
// bal=left jobb=right
void bkf::beszur(int k) {
if(root != NULL)
while (true) {
if (k < root->data) {
if (root->bal == NULL) {
root->bal = new node;
root->bal->data = k;
root->bal->bal = NULL;
root->bal->jobb = NULL;
break;
}
else
root = root->bal; // overwrites root
}
else
if (root->jobb == NULL) {
root->jobb = new node;
root->jobb->data = k;
root->jobb->bal = NULL;
root->jobb->jobb = NULL;
break;
} else
root = root->jobb; // overwrites root
}
else {
root = new node;
root->data = k;
root->bal = NULL;
root->jobb = NULL;
}
}
"루트 = 루트 레벨> BAL"이 데이터를 받아 왼쪽 너무 루트 레벨> BAL 오른쪽 노드 너무 있도록 루트는 덮어 쓰기됩니다. 또한 "노드 * p"를 만들고 루트를 할당하려고 시도했지만 p가 가리키는 곳이 아닌 p 자체에 메모리를 할당합니다. 다음은 선언입니다.
struct node {
int data;
node *bal;
node *jobb;
};
class bkf {
node *root;
// ...
어떻게 제대로 수행됩니까?
노드를 수행 중 * root_local = root가 작동했습니다. 감사. 첫 번째 노드를 만들 때 할당 후 root = root_local을 수행해야했지만. – vEx