কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ট্রি পোস্ট-অর্ডার ট্রভার্সাল (Binary Tree Postorder Traversal in Python)


একটি বাইনারি ট্রি দেওয়া আছে। এর পোস্ট-অর্ডার ট্রভার্সাল (বাম, ডান, রুট) ইটেরেটিভ পদ্ধতিতে বের করুন।

উদাহরণ: ট্রি [-10,9,10,None,None,15,7] -> আউটপুট [9,15,7,10,-10]।

সমাধানের ধাপসমূহ

  • যদি রুট null, খালি লিস্ট রিটার্ন।
  • স্ট্যাক ব্যবহার করুন: pair [node, state] (state 0=প্রথমবার, 1=প্রক্রিয়া করা) 찔ে।
  • যখন state 0: নোডকে state 1 দিয়ে পুশ, তারপর ডান ও বাম সন্তানকে state 0 দিয়ে পুশ।
  • যখন state 1: নোডের মান রেজাল্টে যোগ করুন।

পাইথন কোড উদাহরণ

class TreeNode:
    def __init__(self, data, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right

def insert(temp, data):
    que = [temp]
    while que:
        temp = que.pop(0)
        if not temp.left:
            temp.left = TreeNode(data) if data is not None else TreeNode(0)
            break
        else: que.append(temp.left)
        if not temp.right:
            temp.right = TreeNode(data) if data is not None else TreeNode(0)
            break
        else: que.append(temp.right)

def make_tree(elements):
    Tree = TreeNode(elements[0])
    for element in elements[1:]: insert(Tree, element)
    return Tree

class Solution:
    def postorderTraversal(self, root):
        if not root: return []
        res = []
        stack = [[root, 0]]
        while stack:
            node = stack.pop()
            if node[1] == 0:
                current = node[0]
                stack.append([current, 1])
                if current.right: stack.append([current.right, 0])
                if current.left: stack.append([current.left, 0])
            else:
                if node[0].data != 0: res.append(node[0].data)
        return res

ob = Solution()
root = make_tree([-10,9,10,None,None,15,7])
print(ob.postorderTraversal(root))

ইনপুট

[-10,9,10,None,None,15,7]

আউটপুট

[9, 15, 7, 10, -10]
  1. পাইথনে ইনঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা

  2. পাইথনে বাইনারি ট্রি ইনঅর্ডার ট্রাভার্সাল

  3. পাইথনে বাইনারি ট্রির ডায়ামিটার

  4. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)