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

चरण निम्नलिखित हैं:
- build_tree() नामक एक मेथड परिभाषित करें, यह inorder, postorder लेगा:
- यदि inorder सूची खाली नहीं है:
- root := postorder के अंतिम मान के साथ एक ट्री नोड बनाएं, फिर उस तत्व को हटा दें
- ind := inorder सूची में root डेटा का इंडेक्स
- root का राइट := build_tree(inorder[ind+1:], postorder)
- root का लेफ्ट := build_tree(inorder[:ind], postorder)
- root लौटाएं
- यदि inorder सूची खाली नहीं है:
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class TreeNode:
def __init__(self, data, left = None, right = None):
self.data = data
self.left = left
self.right = right
def print_tree(root):
if root is not None:
print_tree(root.left)
print(root.data, end = ', ')
print_tree(root.right)
class Solution(object):
def buildTree(self, inorder, postorder):
if inorder:
root = TreeNode(postorder.pop())
ind = inorder.index(root.data)
root.right = self.buildTree(inorder[ind+1:], postorder)
root.left = self.buildTree(inorder[:ind], postorder)
return root
ob1 = Solution()
print_tree(ob1.buildTree([9,3,15,20,7], [9,15,7,20,3]))
इनपुट
[9,3,15,20,7] [9,15,7,20,3]
आउटपुट
[9,3,15,20,7]