Алгоритм Inorder (дерево)
1. Пройдите по левому поддереву, то есть вызовите Inorder (левое поддерево)
2. Посетите корень.
3. Пройдите по правому поддереву, т.е. вызовите Inorder (правое поддерево)
#function to return tree
def buildtree(preorder,inorder,start,end):
tree=[]
k=0
if start > end :
return 0
if start == end:
return tree
#compare bn inorder and preorder
for i in range(start,end+1):
if inorder[i]==preorder[0]:
k=i
break
tree.append(inorder[k])
#recursive function
buildtree(preorder[1:],inorder,start,k-1)
buildtree(preorder[1:],inorder,k+1,end)
if __name__ == "__main__":
inorder = [4, 2, 5, 1, 3]
preorder = [1, 2, 4, 5, 3]
len1 = len(inorder)
tree = buildtree(preorder, inorder,0, len1-1)
print( tree)