मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें प्रीऑर्डर ट्रैवर्सल तरीके से बाइनरी ट्री से पैरेंथेसिस और पूर्णांकों से बनी एक स्ट्रिंग बनानी है। एक नल नोड को खाली पैरेंथेसिस जोड़ी "()" द्वारा दर्शाया जाएगा। और हमें उन सभी खाली पैरेंथेसिस जोड़ियों को छोड़ना होगा जो स्ट्रिंग और मूल बाइनरी ट्री के बीच एक-से-एक मैपिंग संबंध को प्रभावित नहीं करते।
उदाहरण के लिए, यदि इनपुट है:

तो आउटपुट 5(6()(8))(7) होगा।
हल करने के चरण
- ans := खाली स्ट्रिंग
- pot() फ़ंक्शन परिभाषित करें। यह node, s लेगा
- यदि null है, तो खाली स्ट्रिंग वापस करें
- यदि node का बायां या दायां null है, तो node.data वापस करें
- ss := node.data
- यदि node.left null नहीं है, तो:
- ss := ss + '(' + pot(node.left, खाली स्ट्रिंग) + ')'
- अन्यथा:
- ss := ss + '()'
- यदि node.right null नहीं है, तो:
- ss := ss + '(' + pot(node.right, खाली स्ट्रिंग) + ')'
- ss वापस करें
- मुख्य मेथड से निम्न करें:
- pot(t, खाली स्ट्रिंग) वापस करें
उदाहरण
class TreeNode:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
def insert(temp, data):
que = []
que.append(temp)
while len(que):
temp = que[0]
que.pop(0)
if not temp.left:
if data is not None:
temp.left = TreeNode(data)
else:
temp.left = TreeNode(0)
break
else:
que.append(temp.left)
if not temp.right:
if data is not None:
temp.right = TreeNode(data)
else:
temp.right = 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 tree2str(self, t: TreeNode):
ans = ''
def pot(node, s):
if node == None or node.data == 0:
return ''
if node.left == node.right == None:
return str(node.data)
ss = str(node.data)
if node.left != None:
ss = ss + '(' + pot(node.left, '') + ')'
else:
ss = ss + '()'
if node.right != None:
ss = ss + '(' + pot(node.right, '') + ')'
return ss
return pot(t, '')
ob = Solution()
root = make_tree([5,6,7,None,8])
print(ob.tree2str(root))
इनपुट
[5,6,7,None,8]
आउटपुट
5(6()(8))(7)