2018秋招小红书算法方向在线编程题

代码如下:

class TreeNode:
    def __init__(self, x):
        self.left=None
        self.right=None
        self.value=x

def BuildTree(ceng, zhong):
    if len(ceng)==0:
        return None
    if len(ceng)==1:
        return TreeNode(ceng[0])
    else:
        flag=TreeNode(ceng[0])
        root=ceng[0]
        zong=zhong[:zhong.index(ceng[0])]
        cen=[]
        for i in ceng:
            if i in zong:
                cen.append(i)
        flag.left=BuildTree(cen,zong)
        cen = []
        zong=zhong[zhong.index(ceng[0])+1:]
        for i in ceng:
            if i in zong:
                cen.append(i)
        flag.right=BuildTree(cen,zong)
        return flag


def PrintLeafNode(root,node):
    if root==None:
        return
    if root.left==None and root.right==None:
        node.append(root.value)
    PrintLeafNode(root.left, node)
    PrintLeafNode(root.right, node)


def PreTravel(root,node):
    if root==None:
        return
    node.append(root.value)
    PreTravel(root.left, node)
    PreTravel(root.right, node)


def BackTravel(root, node):
    if root==None:
        return
    BackTravel(root.left, node)
    BackTravel(root.right, node)
    node.append(root.value)



ceng=input().strip().split(" ")
zhong=input().strip().split(" ")
root=BuildTree(ceng, zhong)
leaf=[]
pre=[]
back=[]
PrintLeafNode(root, leaf)
PreTravel(root, pre)
BackTravel(root, back)
print(" ".join(leaf))
print(" ".join(pre))
print(" ".join(back))

猜你喜欢

转载自www.cnblogs.com/tsdblogs/p/9672129.html