我的 BST 的根名为 pTree。它由以下人员声明:
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 读取,读取的每个节点都会打印出它的深度。但是我在这里遇到的问题是树根就像树的副本,它们是相同的,因此深度始终为 1(从节点到根的距离加 1)。如何从初始树根声明树根,即使树改变也永远不会改变?谢谢,对不起我的英语!