1递归构建二叉树。参考 https://www.cnblogs.com/xinchrome/p/4905608.html。
2使用python的字典储存深度上最右侧结点的数据,按顺序返回值(可以使用有序字典)。
运行结果 运行时间 占用内存 使用语言
答案正确 28ms 6520KB Python 3
dic = {} # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # 求二叉树的右视图 # @param xianxu int整型一维数组 先序遍历 # @param zhongxu int整型一维数组 中序遍历 # @return int整型一维数组 # class Solution: def solve(self, xianxu, zhongxu): # write code here count = 0 recurve(xianxu, zhongxu, count) global dic i = 1 ans = [] while i in dic.keys(): ans.append(dic[i]) i += 1 return ans def recurve(xianxu, zhongxu, count): count += 1 if not zhongxu: return if not xianxu: return mid = zhongxu.index(xianxu[0]) root = treenode(xianxu[0]) del xianxu[0] if mid == 0: root.left = None else: root.left = recurve(xianxu, zhongxu[0:mid], count) if mid == len(zhongxu)-1: root.right = None else: root.right = recurve(xianxu, zhongxu[mid+1:len(zhongxu)], count) global dic dic[count] = root.val return root class treenode: def __init__(self, val): super().__init__() self.val = val self.left = None self.right = None