Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में ट्री नोड के Kth पूर्वज को खोजने का कार्यक्रम

मान लीजिए कि हमारे पास n नोड्स वाला एक पेड़ है जिसकी संख्या 0 से n-1 तक है। पेड़ माता-पिता सरणी द्वारा दिया जाता है, जहां माता-पिता [i] नोड i के माता-पिता हैं। पेड़ की जड़ नोड 0 है। हमें किसी दिए गए नोड के kth पूर्वज को खोजना होगा, यदि पूर्वज मौजूद नहीं है, तो वापसी -1

तो, अगर इनपुट पसंद है

पायथन में ट्री नोड के Kth पूर्वज को खोजने का कार्यक्रम

तो आउटपुट 2 होगा क्योंकि नोड 6 का पहला पूर्वज 5 है और दूसरा 2 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन को हल करें () परिभाषित करें। यह पैरेंट, नोड, k

    . लेगा
  • यदि नोड -1 के समान है, तो

    • वापसी -1

  • अन्यथा जब k 1 के समान हो, तब

    • माता-पिता को लौटाएं [नोड]

  • अन्यथा जब (k और k-1) शून्य हो, तब

    • रिटर्न सॉल्व (पैरेंट, सॉल्व (पैरेंट, नोड, के / 2 का भागफल), के / 2 का भागफल)

  • अन्यथा,

    • एमएसबी:=2^(के -1 के बिट्स की संख्या)

    • रिटर्न सॉल्व (पैरेंट, सॉल्व (पैरेंट, नोड, के-एमएसबी), एमएसबी)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें

def solve(parent, node, k):
   if node == -1:
      return -1
   elif k == 1:
      return parent[node]
   elif not (k & k-1):
      return solve(parent, solve(parent, node, k >> 1), k >> 1)
   else:
      msb = 1 << (k.bit_length()-1)
      return solve(parent, solve(parent, node, k-msb), msb)

parent = [-1,0,0,1,2,2,5,5]
node = 6
k = 2
print(solve(parent, node, k))

इनपुट

[6,7,9,16,22], 2

आउटपुट

2

  1. पायथन में एक पेड़ के सबसे गहरे नोड को खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें सबसे गहरे नोड का मान ज्ञात करना होगा। यदि एक से अधिक गहरे नोड हैं, तो सबसे बाएं सबसे गहरे नोड को वापस करें। तो, अगर इनपुट पसंद है तो आउटपुट 4 होगा क्योंकि 4 और 7 सबसे गहरे हैं लेकिन 4 सबसे ज्यादा बचे हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे

  1. पायथन में बाइनरी सर्च ट्री में kth सबसे छोटा तत्व खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है, और एक और पूर्णांक k है, तो हमें ट्री में kth सबसे छोटा मान खोजना होगा। तो, अगर इनपुट पसंद है k =3, तो आउटपुट 7 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - स्टैक :=एक खाली स्टैक मैं :=0 उत्तर :=-1 जबकि स्टैक खाली नहीं है या रूट

  1. पायथन में एक बाइनरी ट्री पर k-लंबाई पथ खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है जिसमें अद्वितीय मान हैं और हमारे पास एक और मान k भी है, तो हमें ट्री में k-लंबाई वाले अद्वितीय पथों की संख्या ज्ञात करनी होगी। रास्ते माता-पिता से बच्चे तक या बच्चे से माता-पिता तक जा सकते हैं। हम दो रास्तों पर विचार करेंगे जब एक पथ में कुछ नोड दिखाई देते हैं