BST में हटाया जा रहा है नोड्स का उपयोग कर मुक्त (एन)

वोट
0

मैं एक द्विआधारी खोज वृक्ष कोडिंग कर रहा हूँ और मैं एक छोटे से प्रभावी ढंग से नोड को हटाने के लिए एक तरह से ढूंढने में कठिनाई हो रही है।

मैं इस कोड है:

struct node* deleteNode(int i, struct node *N)

{
    if (N==NULL)
    {
        return NULL;
    }
    else if (i<N->value)
    {
        N->size--;
        N->lChild=deleteNode(i,N->lChild);
    }
    else if (i>N->value)
    {
        N->size--;
        N->rChild=deleteNode(i,N->rChild);
    }
    else if (N->lChild==NULL)
    {
        return N->rChild;
    }
    else if (N->rChild==NULL)
    {
        return N->lChild;
    }
    else
    {
        N->size--;
        N->value=findMin(N->rChild);
        N->rChild=deleteNode(N->value,N->rChild);
    }
    return N;
}

मूल्य, lChild, rChild, आकार, ऊंचाई: और एन एक नोड संरचना जो 5 क्षेत्रों है। वास्तव में क्या मैं यहाँ कर रहा हूँ कि मैं नोड को हटाना चाहते हैं लेकिन की ओर इंगित करने के लिए पेड़ बनाने के लिए नहीं है जब मैं की तरह कुछ डाल करने के लिए कोशिश कर रहा हूँ:

    else if (N->rChild==NULL)
    {
        free(N);
        N=NULL;
        return N->lChild;
    }

या हर समान लग रही कोड, यह काम नहीं करता। क्या कोई मुझे सही दिशा की और संकेत करने में सक्षम है? धन्यवाद।

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


1 जवाब

वोट
0

सब से पहले तुम कह रहे हो एन = शून्य और फिर N- बुला> lchild एन रिक्त है और कुछ भी नहीं की ओर इशारा करते तो कैसे आप lchild मूल्य प्राप्त करने की उम्मीद करते हैं?

चूंकि यह होमवर्क है मैं एक सीधा जवाब है, लेकिन संकेत नहीं दे देंगे।

नोड को हटाने के लिए जाँच अगर यह बच्चे हैं, यह मुक्त है और इस तरह माता-पिता बच्चे को ptr के रूप में यह करने के लिए संदर्भ निकाल नहीं करता है। यह 1 बच्चा स्वैप ptr उस नोड आप बच्चे के साथ हटा सकते हैं और नोड मुक्त करना चाहते हैं की ओर इशारा करता है, तो। एक ही लागू होता है अगर आप भी 2 बच्चे हैं।

30/03/2011 को 17:24
का स्रोत उपयोगकर्ता

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