递归解法简单易懂
输出二叉树的右视图
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