下面的代码怎样改啊,请大家帮忙

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' toMyHuffmanNode*'
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楼的定义应该就可以了。