L2-011 玩转二叉树 (25 分)

L2-011 玩转二叉树 (25 分),第1张

from collections import deque
class Node:
    def __init__(self,data):#创建节点
        self.data=data
        self.lchild=None
        self.rchild=None
def creat(Pre,InOrder):#Pre为题目给的前序结果,InOrder为中序结果
    if Pre==[] or InOrder==[]:
        return
    root=Node(Pre[0])
    i=InOrder.index(Pre[0])
    root.lchild = creat(Pre[i + 1:], InOrder[i + 1:])
    root.rchild=creat(Pre[1:i+1],InOrder[:i])
    return root
def level(root):
    queue=deque()
    queue.append(root)
    while len(queue)>0:
        node=queue.popleft()
        ans.append(node.data)
        if node.lchild!=None:
            queue.append(node.lchild)
        if node.rchild!=None:
            queue.append(node.rchild)
global ans
ans=[]
n=int(input())
mid=input().split()
p=input().split()
r=creat(p,mid)
level(r)
print(*ans)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/729696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存