# 该方案不必老实巴交还原二叉链表,且形式上是新的尝试
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 求二叉树的右视图
# @param xianxu int整型一维数组 先序遍历
# @param zhongxu int整型一维数组 中序遍历
# @return int整型一维数组
#该方案不必老实巴交还原二叉链表,直接在递归时得到结果
class Solution:
def rightView(self,xianxu,zhongxu,level):
global res #使用全局变量
if zhongxu==[]: #zhongxu缩得快,所以以它为准#修正:其实zhongxu和xianxu子串是同步缩短的
return #这两句可以换成if not zhongxu: return
if level>len(res):
res.append(xianxu[0]) #不同层则追加
else:
res[level-1]=(xianxu[0]) #同层则覆盖
ind=zhongxu.index(xianxu[0])
self.rightView(xianxu[1:ind+1],zhongxu[0:ind],level+1) #分别递归遍历左右子树的串
#rightView(xianxu[1:],zhongxu[0:ind],level+1) #如果用了这句,则上面要以zhongxu为准
self.rightView(xianxu[ind+1:],zhongxu[ind+1:],level+1)
def solve(self , xianxu, zhongxu):
# write code here
level=1;global res;res=[]
self.rightView(xianxu,zhongxu,level)
return(res) #若不采用全局变量则res始终为空