algorithm - Find the successor without using parent pointer -


बीएसटी में एक तत्व के उत्तराधिकारी, तत्व के उत्तराधिकारी क्रमबद्ध क्रम में क्रमबद्ध क्रम में निर्धारित होता है। उत्तराधिकारी को ढूंढने पर, जब प्रत्येक नोड के अपने माता-पिता नोड के लिए एक संकेतक होता है, तो CLRS के एल्गोरिथ्म पाठ्यपुस्तक (एमआईटी प्रेस द्वारा एल्गोरिदम का परिचय) में प्रस्तुत किया जाता है।

उत्तराधिकारी को ढूंढने का विचार यह है - अगर नोड का सही उप-भाग x अनुपयोगी है, x के उत्तराधिकारी सही उपखंड में न्यूनतम तत्व है अन्यथा, उत्तराधिकारी x का सबसे कम पूर्वज है, जिसका बायां बच्चा भी x का एक पूर्वज है (नोड संभालने का स्वयं का पूर्वज है)।

क्या हम माता-पिता नोड में पॉइंटर का उपयोग किए बिना उत्तराधिकारी पा सकते हैं?

कभी-कभी हमारे ट्री नोड में यह सूचक नहीं होता है मैंने कुछ घंटों तक संघर्ष किया लेकिन सही कोड नहीं लिख सकता।

यह काम करना चाहिए:

  त्रि-सफलता (टी, एक्स ) यदि सही [x]! = शून्य वापस तीर-न्यूनतम (दाएं [x]) और फिर FIND-TREE-SUCCESSOR (रूट [टी], एक्स, शून्य) वापस जाएं- त्रि-सफलताकर्त्ता (y, x, c) यदि y = X रिटर्न सी अगर कुंजी [x] & lt; कुंजी [या] रिटर्न FIND-TREE-SUCCESSOR (बाएं [y], x, y) फिर से FIND-TREE-SUCCESSOR (दाईं ओर [y], x, c)  

FIND-TREE-SUCCESSOR c (उम्मीदवार का) पिछले नोड में रहता है जिसमें हमने छोड़ा था।


Comments