Как создать двоичное дерево, используя Inorder и Preorder в python? - PullRequest
1 голос
/ 18 марта 2020
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...