선불 순회 (ROOT, LEFT, RIGHT)를 사용하여 특정 노드의 주소를 가져온 다음이 항목을 사용하여 이진 검색 트리를 만들고 싶습니다.포인터가 재귀 함수 종료 후 주소를 변경합니다.
재귀 함수는 작동하지만 끝날 때 노드에 대한 포인터가 NULL로 다시 변경됩니다.
void rlr(Node * x,Node * z)
{
if (x != NULL)
{
if (a condition)
{
z = x;
}
rlr(x->get_left(),z);
rlr(x->get_right(),z);
}
}
void main()
{
....
Node * z = NULL;
rlr(root,z);
while(z!=NULL)
....
}
더 정확하게 RLR 함수 조건이 노드에 해당 Z 포인트이며 그 노드 가리켜 야하지만,이 기능을 종료 할 때, Z 포인트 다시 NULL 대신 특정 노드를 가리키는 경우.
의 함수 호출에 assignement
&z
에Node** z
대신 함수 매개 변수에Node* z
,*z
대신z
를보고하십시오. 어느쪽에 지정 하시겠습니까? –매개 변수는 C++에서 값으로 전달됩니다. –
전달 된 매개 변수를 정말로 수정하려면 사용 가능한 더 좋은 옵션이 있지만 참조로 전달해야합니다. 예 :이 경우 원하는 포인터를 반환 할 수 있습니다 (또한 'NULL'과 원시 포인터보다 스마트 포인터를 선호) – UnholySheep