zoukankan      html  css  js  c++  java
  • LeetCode 226. 翻转二叉树

    226. 翻转二叉树

    Difficulty: 简单

    翻转一棵二叉树。

    示例:

    输入:

         4
       /   
      2     7
     /    / 
    1   3 6   9
    

    输出:

         4
       /   
      7     2
     /    / 
    9   6 3   1
    

    备注:
    这个问题是受到 的 启发的 :

    谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

    Solution

    Language: 全部题目

    最近这几道题都是BFS+队列解决的,有点感觉了。

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    ​
    class Solution:
        def invertTree(self, root: TreeNode) -> TreeNode:
            if not root: return None
            queue = [root]
            
            while queue:
                size = len(queue)
                for i in range(size):
                    node = queue.pop()
                    if node:
                        node.left, node.right = node.right, node.left
                        queue.append(node.left)
                        queue.append(node.right)
            
            return root
    

    解法二:基于DFS+stack的解法。

    class Solution:
        def invertTree(self, root: TreeNode) -> TreeNode:
            if not root: return None
            stack = [root]
            
            while stack:
                node = stack.pop()
                if node:
                    node.left, node.right = node.right, node.left
                    stack.append(node.right)
                    stack.append(node.left)
            return root
    
  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14071319.html
Copyright © 2011-2022 走看看