<分区>
template<class T>
class BNode
{
public:
T data;
BNode *parent, *left, *right;
explicit BNode(T d) : data(d), parent(nullptr), left(nullptr),
right(nullptr)
{}
};
问题 1:这是对的。
template<class T>
void BST<T>::InOrder_(BNode<T> *&s)
{
if (s)
{
InOrder_(s->left);
cout << s->data << ' ';
InOrder_(s->right);
}
}
问题 2:这是错误的。
template<class T>
void BST<T>::InOrder_(const BNode<T> *&s)
{
if (s)
{
InOrder_(s->left);
cout << s->data << ' ';
InOrder_(s->right);
}
}
错误:无法绑定(bind)类型为“const BNode<int>*&
”的非常量左值引用' 为 ' const BNode<int>*
类型的右值'
InOrder_(s->left);
~~~^~~~
问题 3:这是对的。
template<class T>
void BST<T>::InOrder_(BNode<T> *const &s)
{
......
}
问题 4:这是对的。
template<class T>
void BST<T>::InOrder_(const BNode<T> *const &s)
{
......
}
你能告诉我上面的问题为什么是对的还是错的? 谢谢!