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

Python से पोस्टऑर्डर ट्रैवर्सल से एक्सप्रेशन ट्री कैसे बनाएं और मूल्यांकन करें?

पोस्टफिक्स एक्सप्रेशन से स्टैक-आधारित एल्गोरिदम से एक्सप्रेशन ट्री बनाएं और रिकर्सिवली मूल्यांकन करें।

एल्गोरिदम

  • buildTree(postfix): स्टैक में (नोड, साइड) टपल्स रखें। पोस्टफिक्स से पॉप करके ट्री बनाएं।
  • evaluate(root): अगर नोड न्यूमेरिक तो वैल्यू रिटर्न। वरना लेफ्ट/राइट रिकर्सिवली मूल्यांकन करके ऑपरेटर अप्लाई करें।

उदाहरण कोड


LEFT, RIGHT = 0, 1

class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def evaluate(root):
    if root.val.isnumeric():
        return int(root.val)
    left_val = evaluate(root.left)
    right_val = evaluate(root.right)
    if root.val == '+': return left_val + right_val
    if root.val == '-': return left_val - right_val
    if root.val == '*': return left_val * right_val
    if root.val == '/': return left_val // right_val

def buildTree(postfix):
    root = None
    stack = []
    while postfix:
        curr = postfix.pop()
        curr_node = Node(curr)
        if not root: root = curr_node
        if stack:
            parent, side = stack.pop()
            if side == LEFT: parent.left = curr_node
            else: parent.right = curr_node
        if not curr.isnumeric():
            stack.append((curr_node, LEFT))
            stack.append((curr_node, RIGHT))
    return root

# टेस्ट: ['1','2','+','3','4','+','*'] -> (1+2)*(3+4) = 3*7 = 21? 
# नोट: उदाहरण में '-' ऑपरेटर है लेकिन पोस्टफिक्स में '+' दो बार।
# सही: ['1','2','-','3','4','+','*'] -> (1-2)*(3+4) = -7

इनपुट/आउटपुट

इनपुट: ['1','2','+','3','4','+','*'] (नोट: उदाहरण आउटपुट -7 के लिए '-' होना चाहिए)
आउटपुट: -7 (यदि एक्सप्रेशन (1-2)*(3+4) है)

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

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

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

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

  1. पायथन में पोस्टऑर्डर और इनऑर्डर से बाइनरी ट्री बनाना पायथन में पोस्टऑर्डर और इनऑर्डर से बाइनरी ट्री बनाना

    समस्या विवरण बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल दिया गया है, ट्री पुनर्निर्मित करें। उदाहरण इनऑर्डर: [9, 3, 15, 20, 7] पोस्टऑर्डर: [9, 15, 7, 20, 3] आउटपुट (इनऑर्डर): 9, 3, 15, 20, 7 एल्गोरिदम (रिकर्सिव) पोस्टऑर्डर का अंतिम तत्व रूट है इनऑर्डर में रूट का इंडेक्स ind ढूंढें बायां सबट्र