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

पायथन में बाइनरी ट्री में सबसे लंबे सम-मूल्य पथ को खोजने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें ट्री में किन्हीं दो नोड्स के बीच केवल सम मान वाले नोड्स से बने सबसे लंबे पथ को ढूंढना है।

उदाहरण के लिए, यदि इनपुट निम्न ट्री है:

पायथन में बाइनरी ट्री में सबसे लंबे सम-मूल्य पथ को खोजने का प्रोग्राम

तो आउटपुट 5 होगा क्योंकि सबसे लंबा पथ [10, 2, 4, 8, 6] है।

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

  • ans := 0 आरंभ करें।

  • find() फ़ंक्शन परिभाषित करें जो node लेता है।

  • यदि node null है, तो (-1, -1) लौटाएं।

  • leftCnt := max(find(node.left)) + 1 और rightCnt := max(find(node.right)) + 1 की गणना करें।

  • यदि नोड का मान सम है, तो:

    • ans := max(ans, leftCnt + rightCnt + 1) अपडेट करें।

    • (leftCnt, rightCnt) लौटाएं।

  • अन्यथा:

    • ans := max(ans, leftCnt, rightCnt) अपडेट करें।

    • (-1, -1) लौटाएं।

  • मुख्य विधि से find(root) कॉल करें।

  • ans लौटाएं।

उदाहरण

class TreeNode:    def __init__(self, val, left=None, right=None):       self.val = val       self.left = left       self.right = right class Solution:    def solve(self, root):       ans = 0       def find(node):          nonlocal ans          if not node:             return -1, -1          leftCnt = max(find(node.left)) + 1          rightCnt = max(find(node.right)) + 1          if node.val % 2 == 0:             ans = max(ans, leftCnt + rightCnt + 1)             return leftCnt, rightCnt          else:             ans = max(ans, max(leftCnt, rightCnt))             return -1, -1       find(root)       return ans ob = Solution() root = TreeNode(2) root.left = TreeNode(10) root.right = TreeNode(4) root.right.left = TreeNode(8) root.right.right = TreeNode(2) root.right.left.left = TreeNode(6) print(ob.solve(root))

इनपुट

root = TreeNode(2) root.left = TreeNode(10) root.right = TreeNode(4) root.right.left = TreeNode(8) root.right.right = TreeNode(2) root.right.left.left = TreeNode(6)

आउटपुट

5

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

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक पूर्णांक k है, हमें ट्री में kवां सबसे छोटा मान ढूंढना है। उदाहरण के लिए, यदि इनपुट निम्न ट्री है: k = 3, तो आउटपुट 7 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (इटरेटिव इनऑर्डर ट्रैवर्सल): stack := [], i := 0, ans := -1। जब तक stack खाली

  1. पायथन में बाइनरी ट्री के किसी भी पथ का सबसे बड़ा योग खोजने का प्रोग्राम पायथन में बाइनरी ट्री के किसी भी पथ का सबसे बड़ा योग खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें रूट नोड से लीफ नोड तक जाने वाले किसी भी पथ का सबसे बड़ा योग ढूंढना है। उदाहरण के लिए, यदि इनपुट जैसा है: तो आउटपुट 29 होगा क्योंकि रूट से, यदि हम पथ 5-<9-<7-<8 का पालन करते हैं तो जोड़ के बाद यह 29 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  1. पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें ट्री में किसी भी स्तर की अधिकतम चौड़ाई ढूंढनी है। यहां एक स्तर की चौड़ाई उन नोड्स की संख्या है जो बाएं सबसे नोड और दाएं सबसे नोड के बीच रखे जा सकते हैं। उदाहरण के लिए, यदि इनपुट है: तो आउटपुट होगा 2। हल करने के चरण एक मैप d बनाएं, न्यूनतम और अधिकतम मान