2011-08-22 19 views
7

मेरे पास दो बाइनरी पेड़ हैं और मैं उन्हें मर्ज करना चाहता हूं। मेरा पहला सवाल यह है कि क्या हम दो बाइनरी पेड़ मर्ज कर सकते हैं और यदि हां कुशलता से मैं मर्ज ऑपरेशन कर सकता हूं और विलय करने वाले परिचालनों के विभिन्न तरीकों से मैं क्या कर सकता हूं। ..?मैं दो बाइनरी पेड़ों को कैसे विलय कर सकता हूं

+6

बाइनरी पेड़ विलय करना मामूली है, बस दूसरे की पत्ती नोड्स में से एक के बच्चे के रूप में एक की जड़ को लिंक करें। क्या आपके पास कुछ अन्य संरचना है जिसे आप संरक्षित करना चाहते हैं, जैसे आदेश दिया जाना या संतुलित करना? – JGWeissman

+0

सरल unordered असंतुलित पेड़ के साथ शुरू करते हैं। आपने कहा कि यह छोटा है तो क्या आप मुझे दिखा सकते हैं कि यह कैसे किया जाता है ..? –

उत्तर

22

1) क्रमबद्ध सूचियों में दोनों पेड़ों को फ़्लैट करें।
2) से सूचियों मर्ज क्या आप 1 में मिल गया)
3) से बाहर पेड़ का निर्माण क्या आप 2 में मिल गया)

+0

जटिलता wahts? –

+2

आप मानक इन-ऑर्डर पैदल चलने से ओ (एन) समय में पेड़ों को सूट में फहरा सकते हैं। दो क्रमबद्ध सूचियों को विलय करना ओ (एन) समय में भी किया जा सकता है। एक बार जब आप सूचियों को विलय कर लेते हैं, तो आप बाएं और दाएं हिस्सों से पेड़ बनाने के बाद ओ (एन) समय में बीएसटी का निर्माण कर सकते हैं, फिर उन्हें एक साथ चिपका सकते हैं। इसलिए समग्र जटिलता ओ (एन) है। – templatetypedef

+0

@templatetypedef: उत्तर के लिए धन्यवाद। हां, जटिलता ओ (एन) है। – hari

5

This एल्गोरिथ्म आप मदद कर सकता है।

+0

इसका पेड़ से कोई लेना देना नहीं है। – SLaks

+1

@SLaks हां यह करता है। चूंकि हम जानते हैं कि वे बीएसटी हैं, हम पेड़ को एक क्रमबद्ध सूची में व्यवस्थित कर सकते हैं। एक बार हमारे पास 2 सॉर्टेड सूचियां हों, तो यह एल्गोरिदम लागू होता है। –

0

एक नया नोड बनाएं और पेड़ों में से एक के सिर पर एक पूंछ को इंगित करें और अन्य पेड़ को दूसरे पेड़ के सिर पर इंगित करें। शायद आपको अधिक विशिष्ट होने के लिए अपने प्रश्न को स्पष्ट करने की आवश्यकता है। आप किस रिश्तों को संरक्षित करने की कोशिश कर रहे हैं?

0

एक पेड़ भी एक ग्राफ है, इसलिए प्रत्येक पेड़ के लिए एज वर्टेक्स-जोड़े (यू, वी) आउटपुट करें, और फिर इन किनारे सेटों को संघ दें, और परिणामी ग्राफ को आउटपुट करें।

समस्या यह है कि एक पेड़ में कोने में दूसरे के शिखर तक मैप को कैसे मैप करना है (उदाहरण के लिए हमारे पास पेड़ 1 में एज जोड़ी (5, 9) है और पेड़ 2 में एज जोड़ी (5,6) है, इन 5s एक ही vertex के अनुरूप है?)।

शिखरों की एक संख्या के साथ आ रहा है (शायद यह एक पूर्ण बाइनरी पेड़ में प्रत्येक चरम पर संख्या निर्दिष्ट करता है, जैसे कि यह एक पूर्ण बाइनरी पेड़ था, इसलिए दूसरे शब्दों में किसी भी आंशिक बाइनरी पेड़ में शिखर को स्लॉट्स को आवंटित किया जाता है hypothetical पूर्ण बाइनरी पेड़ जिसमें से पेड़ एक subtree है), कि किसी भी तरह एक वांछनीय समतुल्य प्रदान करता है जो काम करता है।

संबंधित मुद्दे