我有一个二叉树
template<class item_type>
struct node{
item_type x;
node<item_type> *left;
node<item_type> *right;
};
template<class item_type, class param>
class Tree{
node<item_type> *root;
public:
//functions
在我使用的一些函数中node<item_type> *cur = root;
并通过CCD_ 2或CCD_这给我带来了一个错误:
错误:请求成员Get_Height/cur/中的一个函数,该函数为非类类型节点*二进制树
template<class item_type, class param>
int Tree<item_type, param>::Get_Height()
{
node<item_type> *cur = root;
while(cur->left!=NULL || cur->right!=NULL)
{
if(cur==NULL)
return 0;
return max(cur->left.Get_Height(), cur->right.Get_Height())+1;
}
}
我很确定左边的是node类型根据错误,该函数似乎取了一个指向节点的指针,而不是实际的树,所以这应该不是问题。
cur
的类型为struct node *
,它是一个指针。
所以我怀疑它应该是cur->left != NULL
,而且left
也是一个指针,所以它应该是
return max(cur->left->Get_Height(), cur->right->Get_Height())+1;
您的代码中存在严重错误,struct node
中没有Get_Height()
成员。