Is = [ "D", "B" ,"E", "A", "F", "C" ]
Ps = [ "A", "B", "D", "E", "C", "F" ]
def printInorder(root):
if root :
printInorder(root.left)
print("here")
print(root.val)
printInorder(root.right)
p_seq= Ps
i_seq = Is
def findTree(i_seq, p_seq , root):
len_in = len(i_seq)
len_pr = len(p_seq)
print(root.val)
if len_in != len_pr:
return "Not Possible to construct tree.... Try Again with correct inputs"
if len_in is 0:
return None
pre_root = p_seq[0]
if i_seq == 1 :
root.left = None
root.right = None
root.val = pre_root
return root
print("root as per Pre order is.... " , pre_root)
i_root = i_seq.index(pre_root)
print("index of Root in Inorder is..." , i_root)
root.val = pre_root;
left_tree_in_order = i_seq[:i_root]
right_tree_in_order = i_seq[i_root+1:]
left_tree_pre_order = p_seq[1:i_root+1]
right_tree_pre_order = p_seq[i_root+1:]
root.left = findTree(left_tree_in_order,left_tree_pre_order, root)
root.right = findTree(right_tree_in_order, right_tree_pre_order, root)
return root
class Node:
def __init__(self,key):
self.left = None
self.right = None
self.val = key
root1 = Node(0)
r = findTree(i_seq, p_seq,root1)
Все мои узлы имеют F в значении, и когда я запускаю Inorder Traversal, он входит в бесконечный цикл TIA