ничего не выводится - PullRequest
0 голосов
/ 16 мая 2019

Алгоритм 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) 

1 Ответ

0 голосов
/ 16 мая 2019

присвойте что-нибудь k localy

def buildtree(preorder,inorder,start,end):
  k = 0
  ...

или globaly

k = 0 
def buildtree(preorder,inorder,start,end):
  global k 
...