题解 | #输出二叉树的右视图#

输出二叉树的右视图

http://www.nowcoder.com/practice/c9480213597e45f4807880c763ddd5f0

思路:写树类 根据先序中序构建二叉树 然后使用层次遍历

alt

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 求二叉树的右视图
# @param xianxu int整型一维数组 先序遍历
# @param zhongxu int整型一维数组 中序遍历
# @return int整型一维数组
#
class Solution:
    def solve(self , xianxu: List[int], zhongxu: List[int]) -> List[int]:
        # 先恢复二叉树 然后打印层次遍历的最后一个节点
        if len(xianxu)==1 or  len(zhongxu)==1:return xianxu
        def huifu(xianxu,zhongxu):
            if len(xianxu)==0 or len(xianxu)==0:return None
            root=treeNode(xianxu[0])
            root_idx=zhongxu.index(root.val)
            root.left=huifu(xianxu[1:root_idx+1],zhongxu[:root_idx])
            root.right=huifu(xianxu[root_idx+1:],zhongxu[root_idx+1:])
            return root
        def ceng_order(root):
            if root is None:return None
            stack,res=[root],[]
            while stack:
                ceng_nodes=[]
                for i in range(len(stack)):
                    node=stack.pop(0)
                    ceng_nodes.append(node.val)
                    if node.left:stack.append(node.left)
                    if node.right:stack.append(node.right)
                res.append(ceng_nodes[-1])
            return res
        root= huifu(xianxu,zhongxu)
        res=ceng_order(root)
        return res
class treeNode():
    def __init__(self,val,left=None,right=None):
        self.val=val
        self.left=left
        self.right=right
            
全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
昨天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 9人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务