void PrintTree(MyHuffmanNode* root, int n)
{
if (root == NULL)
return;
for (int i=0;i<n;i++)
{
cout<<" ";
}
if (root->father==0)
{
cout<<"|_";
}
else
{
cout<<" ";
}
cout<<root->data<<endl;
PrintTree(root->lchild, n+2);
PrintTree(root->rchild, n+2);
}
错误信息error: invalid conversion from int' to
MyHuffmanNode*'
error: initializing argument 1 of `void PrintTree(MyHuffmanNode*, int)'
lchild, rchild都是整形的变量,root是指针,怎样建立联系啊,请大家帮帮忙,谢谢。
强转下试试PrintTree((MyHuffmanNode*)root->lchild, n+2);
lchild和rchild在定义的时候就应该定义为指向哈夫曼树的结构体指针,其实仔细想想就知道这跟双向链表的定义是一样的。
下面是一个参考:
typede Node *HafuTree;
struct Node {
int data;
HafuTree lchild,rchildn
} ;
你应该用MyHuffmanNode来定义lchild,rchild以及father,它们应该是同一个类型
void PrintTree(MyHuffmanNode* root, int n)
PrintTree(root->lchild, n+2);
PrintTree(root->rchild, n+2);
你看完这三行语句,应该就能明白了;
我不知道你在MyHuffmanNode 这个结构体里面怎么定义的lchild 这个变量,
提示错误也说了 lchild是整形指针, root是MyHuffmanNode指针 肯定不行,
你参考3楼的定义应该就可以了。