0

请告诉我如何创建二叉树。我在谷歌上搜索,但我发现二进制搜索树的每一个地方。这是我的代码。

bool createTree(node* Tree,int d)
{
    bool ret_val=FALSE;
    if(Tree->d==-1)
    {
        Tree->d=d;
        return TRUE;
    }
    else
    {
        node* temp=(node*)malloc(sizeof(node*));
        if (temp==NULL)
            return FALSE;
        temp->l=NULL;
        temp->r=NULL;
        temp->d=d;
        if(Tree->l==NULL)
        {
            Tree->l=temp;
            return TRUE;
        }
        else if(Tree->r==NULL)
        {
            Tree->r=temp;
            return TRUE;
        }
        else
        {
            ret_val=createTree(Tree->l,d);
            if(ret_val)
                return TRUE;
            else
                return createTree(Tree->r,d);
        }
        return FALSE;
    }
}

执行后,您可以看到该值已分配给左侧树,并且它一直在树的左侧。请帮我填写我的二叉树。

4

1 回答 1

1

这个错

node* temp=(node*)malloc(sizeof(node*));

它应该是

node* temp=(node*)malloc(sizeof(node));

但是在 C++ 代码中最好写

node* temp = new node;

这更简单,所以你不太可能犯错误

于 2013-04-16T10:54:41.657 回答