zoukankan      html  css  js  c++  java
  • 199. 二叉树的右视图



    方法一:DFS

    class Solution(object):
        # 方法一:深搜
        def rightSideView(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            ans = []
            self.dfs(root, 0, ans)
            return ans
    
        def dfs(self, root, h, ans):
            if root:
                if h == len(ans):
                    ans.append(root.val)
                # 不同于先序遍历(左视图同先序),
                # 右视图每一层要从右往左访问,这样可以保证每层第一个访问的节点即是所需节点。
                self.dfs(root.right, h + 1, ans)
                self.dfs(root.left, h + 1, ans)
            return ans
    

    方法二:BFS

    class Solution(object):
        # 方法二:广搜
        def rightSideView2(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            ans = []
            if not root:
                return ans
            queue = [root]
            while queue:
                qsize = len(queue)
                for i in range(qsize):
                    # 队列先进先出,而pop()默认是出最后进来的元素
                    # 所以一定要加上下标0
                    node = queue.pop(0)
                    if node.left:
                        queue.append(node.left)
                    if node.right:
                        queue.append(node.right)
                    if i == qsize-1:
                        ans.append(node.val)
            return ans
    
  • 相关阅读:
    Css_加载样式
    Mvc4_@RenderBody()和@RenderSection()
    C#_观察者模式
    Mvc4_MvcPager 概述
    Mvc4_Area的应用
    Nginx 服务器性能参数设置
    Nginx变量的实现机制
    天下无雾
    Nginx Http框架的理解
    【转】websocket协议规范
  • 原文地址:https://www.cnblogs.com/panweiwei/p/13585782.html
Copyright © 2011-2022 走看看