내 BST에는 pTree라는 루트가 있습니다. 그것은에 의해 선언 :BST C++의 포인터 도움말
KnightTree* tree;
가 지금은 (이 경우 "나무"입니다) 루트를 가리키는 새로운 포인터와 함수를 작성해야 결코 이벤트가 변경되지 내가 사용하는 경우 pTree = pTree-> pLeftChild; 또는 pTree = pTree-> pRightChild; 내가 함수를 호출하기 전에 나는 선언 아래 :
이KnightTree* treeroot=tree;
가 그럼이 함수를 호출 :
ReadNLR(tree,treeroot);
와 기능이 같다 :
이void ReadNLR(KnightTree*&tree,KnightTree* treeroot)
{
if(tree !=NULL)
{
cout<<tree->key<<" is at the depth of "<<NodeDepth(treeroot,tree)<<endl;
cout<<treeroot->key<<endl;
ReadNLR(tree->pLeftChild,treeroot);
ReadNLR(tree->pRightChild,treeroot);
}
}
내 생각이 만드는 것입니다 NLR 읽기 및 모든 노드 읽기는 그 깊이를 인쇄합니다. 그러나 여기서 내가 가진 문제는 treeroot가 tree의 복사본처럼 보이고 깊이가 항상 같기 때문에 (노드에서 루트에 1을 더한 거리만큼) 동일하다는 것입니다. 트리가 변경 되더라도 변경되지 않는 초기 트리 루트의 treeroot를 어떻게 선언합니까? 감사합니다, 그리고 내 영어로 유감스럽게 생각합니다!
'NodeDepth' 기능을 보여주십시오. 또한'ReadNLR'의'tree' 매개 변수가 참조 인 이유는 명확하지 않습니다. – prazuber