我写了一个函数来搜索二叉搜索树,但是我有逻辑问题:当我插入一些值时,我有一个 2 级的树,最后一级(在本例中为 2 级)未满(满是它没有所有子节点)它返回 3,而不是 2:
// --- Definition of depth()
template<typename DataType>
int BST<DataType>::depth()
{
int counter = 0;
return Auxdepth(counter, myRoot);
}
// --- Definition of Auxdepth()
template<typename Datatype>
int BST<Datatype>::Auxdepth(int &counter, BinNodePointer subtree)
{
//BinNodePointer parameter is myRoot, which is the root node
int a;
int b;
if(empty()) return -1;// garbage value
if(subtree->left == 0 && subtree->right == 0)
return counter;
else if(subtree->left == 0){
int x = counter++;
a= Auxdepth(x,subtree->right);
return a;
}
else if(subtree->right == 0){
int x = counter++;
a = Auxdepth(x,subtree->left);
return a;
}
if(subtree != 0) { // Recursion
int x = counter + 1;
cout << "This is x " << x << endl;
a = Auxdepth(x, subtree->left);
b = Auxdepth(x, subtree->right);
if(a > b) return a;
else return b;
}
}
注意:深度功能只是为了更友好。谁能告诉我我的错误在哪里?