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

पायथन में लेवल ऑर्डर बाइनरी ट्री ट्रैवर्सल को लिंक्ड लिस्ट में बदलने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी सर्च ट्री है, हमें इसे लेवल ऑर्डर ट्रैवर्सल का उपयोग करके एक सिंगली लिंक्ड लिस्ट में बदलना है।

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

पायथन में लेवल ऑर्डर बाइनरी ट्री ट्रैवर्सल को लिंक्ड लिस्ट में बदलने का प्रोग्राम

तो आउटपुट [5, 4, 10, 2, 7, 15, ] होगा।

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

  • head := एक नया लिंक्ड लिस्ट नोड (डमी)।

  • currNode := head।

  • q := [root] वाली एक क्यू बनाएं।

  • जब तक q खाली नहीं है:

    • curr := q से पहला तत्व निकालें।

    • यदि curr null नहीं है:

      • currNode.next := ListNode(curr.val)।

      • currNode := currNode.next।

      • curr.left और curr.right को q के अंत में जोड़ें।

  • head.next लौटाएं।

उदाहरण

class ListNode:    def __init__(self, data, next = None):       self.val = data       self.next = next class TreeNode:    def __init__(self, data, left = None, right = None):       self.val = data       self.left = left       self.right = right def print_list(head):    ptr = head    print('[', end = "")    while ptr:       print(ptr.val, end = ", ")       ptr = ptr.next print(']')     class Solution:    def solve(self, root):       head = ListNode(None)       currNode = head       q = [root]       while q:          curr = q.pop(0)          if curr:             currNode.next = ListNode(curr.val)             currNode = currNode.next             q.append(curr.left)             q.append(curr.right)       return head.next ob = Solution() root = TreeNode(5) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(2) root.right.left = TreeNode(7) root.right.right = TreeNode(15) head = ob.solve(root) print_list(head)

इनपुट

root = TreeNode(5) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(2) root.right.left = TreeNode(7) root.right.right = TreeNode(15) head = ob.solve(root)

आउटपुट

[5, 4, 10, 2, 7, 15, ]

  1. पायथन में बाइनरी ट्री के BST होने की जांच करने का प्रोग्राम पायथन में बाइनरी ट्री के BST होने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि क्या यह एक बाइनरी सर्च ट्री है या नहीं। जैसा कि हम जानते हैं एक BST के निम्न गुण होते हैं: इसके बाएं सबट्री के सभी नोड्स वर्तमान नोड के मान से छोटे होते हैं इसके दाएं सबट्री के सभी नोड्स वर्तमान नोड के मान से बड़े होते हैं ये गुण सभी नोड्स क

  1. पायथन में बाइनरी ट्री जिगजैग लेवल ऑर्डर ट्रैवर्सल पायथन में बाइनरी ट्री जिगजैग लेवल ऑर्डर ट्रैवर्सल

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जिगजैग लेवल ऑर्डर ट्रैवर्सल ढूंढना है। इसलिए पहली पंक्ति के लिए, बाएं से दाएं स्कैन करें, फिर दूसरी पंक्ति से दाएं से बाएं, फिर फिर से बाएं से दाएं और इसी तरह। इसलिए यदि ट्री इस तरह है -ट्रैवर्सल क्रम [[3],[20,9],[15,7]] होगा।इसे हल करने के लिए, हम इन चरणो

  1. पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें

    मान लीजिए हमारे पास एक क्रमबद्ध सरणी A है। हमें एक ऊंचाई-संतुलित बाइनरी सर्च ट्री उत्पन्न करना है। इस समस्या में, एक ऊंचाई-संतुलित बाइनरी ट्री वास्तव में एक बाइनरी ट्री है जिसमें हर नोड के दो सबट्री की गहराई 1 से अधिक नहीं होती। मान लीजिए सरणी [-10, -3, 0, 5, 9] जैसी है। तो एक संभावित आउटपुट होगा: