百练 / 2019计算机学科夏令营上机考试 G:Falling Leaves
# 百练 / 2019计算机学科夏令营上机考试 G:Falling Leaves
# http://bailian.openjudge.cn/xly2019/G/
# Author:NitrogenousFish
# github:https://github.com/NITROGENousFish/
class bintree:
def __init__(self,leftnode,rightnode,val):
self.leftnode = leftnode
self.rightnode = rightnode
self.val = val
def preorder(self):
if self.leftnode == None and self.rightnode == None:
return self.val
elif self.leftnode == None:
return self.val + self.rightnode.preorder()
elif self.rightnode == None:
return self.val + self.leftnode.preorder()
else:
return self.val + self.leftnode.preorder() + self.rightnode.preorder()
def insertNode(root,val):
if root==None:
root = bintree(None,None,val)
else:
if ord(val)<ord(root.val):
root.leftnode=insertNode(root.leftnode,val)
else:
root.rightnode=insertNode(root.rightnode,val)
return root
def main():
trees_in=[]
tree_in = []
while(1):
inputthing = input()
if inputthing=="$":
trees_in.append(tree_in)
break
if inputthing=="*":
trees_in.append(tree_in)
tree_in = []
continue
tree_in.append(list(inputthing))
for tree in trees_in:
tree.reverse()
this_root = None
for nodes in tree:
if nodes == tree[0]:
this_root = bintree(None,None,nodes[0])
else:
for node in nodes:
insertNode(this_root,node)
print(this_root.preorder())
if __name__ == "__main__":
main()