एक प्रत्यावर्तन और दिए गए संरचनाओं के साथ BST

वोट
0

मैं एक BST के लिए कुछ तरीकों कोड करने के लिए है और मैं कुछ समस्याएं हैं, मुझे समझाती हूँ।

मैं निम्नलिखित संरचना है:

struct node {
    struct node *lChild; 
    struct node *rChild; 
    int value; 
};

तथा

struct tree {
    struct node *root;
};

निम्नलिखित कार्यों के साथ-साथ:

struct tree* constructNewTree()
{
    struct tree *T=malloc(sizeof(struct tree));
    T->root=NULL;

    return T;
}

तथा

struct node* constructNewNode(int i)
{
    struct node *N=malloc(sizeof(struct node));
    N->value=i;
    N->lChild=NULL;
    N->rChild=NULL;

    return N;
}

और अपने मुख्य में मैं (उदाहरण के लिए) इस कॉल करना होगा:

int main()
{
    struct tree *T;
    T=constructNewTree();

    insertKey(5,T);
    insertKey(2,T);
    insertKey(9,T);
    return 0;
}

मुझे क्या करना है समारोह insertKey बनाने के लिए है (मैं, struct पेड़ * टी इंटरनैशनल) प्रत्यावर्तन का उपयोग कर।

मैं की तरह कुछ करना चाहता था

void insertKey(int i, struct tree *T)
{
    if (T->root==NULL) {
        T->root=constructNewNode(i);
        return;
    }
    else {
        if (i<=T->root->value) {
            T->root->lChild=constructNewNode(i);
        else if (i>T->root->value) {
            T->root->rChild=constructNewNode(i);
        }
    }
}

लेकिन यह बहुत दूर नहीं मिलता है, प्रत्यावर्तन का उपयोग करके मुझे insertKey फिर से कॉल करने के लिए, लेकिन मैं एक नोड और एक पेड़ उसी तरह का उपयोग नहीं कर पा रहे की अनुमति होगी।

किसी को भी मैं यह कैसे कर सकता है यह देखते हुए संरचनाओं को बदले बिना पता है?

आपका बहुत बहुत धन्यवाद।

20/03/2011 को 19:16
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

आपका insertKey अपने तर्क के रूप में एक पेड़ लेता है। एक पेड़ बहुत शीर्ष करने के लिए केवल एक सूचक है।

क्या मैं सुझाव है कि आप कर एक insertKey समारोह है कि इसके तर्क के लिए एक नोड लेता है लिखना है। इसके अलावा इस समारोह में, आप अगर वहाँ बायीं / दायीं बच्चे पर एक और पेड़ है देखने के लिए जाँच करने के लिए है।

वर्तमान में आप सिर्फ की परवाह किए बिना क्या है एक नया नोड का निर्माण। यह किसी भी पिछले सम्मिलन ऊपर लिख देगा।

20/03/2011 को 19:47
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more