我的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就像樹的副本一樣,所以深度始終爲1(如從節點到根的距離加1)。我如何從初始樹根聲明treeroot,即使樹更改也不會改變?謝謝你,併爲我的英語感到難過!
請顯示您的'NodeDepth'功能。也不清楚爲什麼'ReadNLR'中的'tree'參數是一個參考。 – prazuber