递归解法简单易懂
输出二叉树的右视图
http://www.nowcoder.com/practice/c9480213597e45f4807880c763ddd5f0
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 求二叉树的右视图
# @param xianxu int整型一维数组 先序遍历
# @param zhongxu int整型一维数组 中序遍历
# @return int整型一维数组
#
class Solution:
def build_tree(self, preorder, inorder):
if len(preorder) < 1:
return None
root = TreeNode(preorder[0])
index = inorder.index(preorder[0])
root.left = self.build_tree(preorder[1:index+1], inorder[:index])
root.right = self.build_tree(preorder[index+1:], inorder[index+1:])
return root
def dfs(self, root, depth):
if root is None:
return
if depth >= len(self.ans):
self.ans.append(root.val)
depth += 1
self.dfs(root.right, depth)
self.dfs(root.left, depth)
def solve(self , xianxu , zhongxu ):
# write code here
self.ans = []
root = self.build_tree(xianxu, zhongxu)
self.dfs(root, 0)
return self.ans
查看18道真题和解析