बाइनरी खोज पेड़ के लिए सबसे कम आम पूर्वज के कार्यान्वयन के बाद निम्नलिखित है। मेरे पास दो प्रश्न हैं:बाइनरी पेड़ में सबसे कम आम पूर्वज
1) समय जटिलता ओ (एन) है और अंतरिक्ष जटिलता ओ (एन) खराब मामला है, लेकिन बीएसटी संतुलित होने पर समय और स्थान दोनों के लिए ओ (लॉगन) औसत मामला है। क्या वो सही है? 2) मैं बाइनरी पेड़ के लिए अपना समाधान कैसे बढ़ा सकता हूं न केवल बाइनरी खोज पेड़।
जल्द ही आपसे सुनने की आशा है।
//The function findOrQueue is to enqueue all elements upto target node to a queue
public void findOrQueue(Node target, Node top, LLQueue q) {
int cmp = target.getData().compareTo(top.getData());
if(cmp == 0) {
q.enqueue(top);
return ;
}
else if (cmp < 0) {
q.enqueue(top);
findOrQueue(target, top.getLeftChild(),q);
}
else {
q.enqueue(top);
findOrQueue(target, top.getRightChild(),q);
}
}
public Node LCA(Node n1, Node n2) throws QueueEmptyException {
LLQueue q1 = new LLQueue();
LLQueue q2 = new LLQueue();
findOrQueue(n1,getRoot(),q1);
findOrQueue(n2,getRoot(),q2);
Node t = null;
while (!q1.isEmpty() && !q2.isEmpty()) {
Node t1 = (Node)q1.dequeue();
Node t2 = (Node)q2.dequeue();
if(t1.getData() != t2.getData()) {
return t;
}
else t = t1;
}
if(q1.isEmpty() && q2.isEmpty())
return null;
else
return t;
}
यह सादा बाइनरी पेड़ पर क्यों काम नहीं करेगा? मुझे इस एल्गोरिदम के लिए कोई शर्त नहीं दिखाई देती है जो एक विशिष्ट नोड ऑर्डर को अनिवार्य करता है। – jma127
फ़ंक्शन ढूंढेंऑक्र्यूयू को बाइनरी सर्च पेड़ के लिए परिभाषित किया गया है और बाइनरी पेड़ नहीं – ueg1990
आप 'findOrQueue()' में तुलना का उपयोग क्यों कर रहे हैं? पेड़ को एक साधारण उलटा होना पर्याप्त होना चाहिए। – jma127