0
typedef struct node
{
    int data;
    struct node *next,*prev;
}harsha;

void create_leaf(harsha **pnode,int value)
{
    harsha *temp=*pnode;
    if(*pnode==NULL)
    {
        *pnode=(struct node *)malloc(sizeof(struct node));
        if(!(*pnode))
        {
            printf("mem not allocated");
            exit(0);
        }
        (*pnode)->data=value;
        (*pnode)->prev=NULL;
        (*pnode)->next=NULL;
    }
    else
    {
        if(value>(temp->data))
        create_leaf(&(temp->next),value);
        else if(value<temp->data)
        create_leaf(&(temp->prev),value);
    }
}

これは、新しいノードをバイナリ検索ツリーに挿入するために作成した関数です。Inorder、Preorder、およびPostorderトラバーサルが正常に機能していないため、コードに問題はありますか。

4

1 に答える 1

1

printf をいくつか入れて、ポインターが一致していることを確認します。あなたの出力からわかるように、null ではない 8 のポインターがいくつかあります。:) &pnode を関数に送信するときに pnode を null に初期化しましたか? それだと思います。:)

于 2012-11-26T10:51:39.373 に答える