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

输出二叉树的右视图

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

# 前序中序重建树,层次遍历保存每层数组,返回每层数组最后一个元素组成的数组
from queue import Queue
class Solution:
    def reConstructTree(self, preOrder: List[int], inOrder: List[int]) -> TreeNode:
        prelength = len(preOrder)
        inlength = len(inOrder)
        if prelength==0 or inlength==0:
            return None
        root = TreeNode(preOrder[0])
        for i in range(len(inOrder)):
            if preOrder[0] == inOrder[i]:
                leftpre = preOrder[1:i+1]
                leftin = inOrder[:i]
                root.left = self.reConstructTree(leftpre, leftin)
                rightpre = preOrder[i+1:]
                rightin = inOrder[i+1:]
                root.right = self.reConstructTree(rightpre, rightin)
                break
        return root
    def solve(self , preOrder: List[int], inOrder: List[int]) -> List[int]:
        root = self.reConstructTree(preOrder, inOrder)
        q = Queue()
        q.put(root)
        cur = None
        res = []
        while not q.empty():
            row = []
            n = q.qsize()
            for i in range(n):
                cur = q.get()
                row.append(cur.val)
                if cur.left:
                    q.put(cur.left)
                if cur.right:
                    q.put(cur.right)
            res.append(row)
        result = []
        for i in range(len(res)):
            result.append(res[i][-1])
        return result

全部评论

相关推荐

06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务