zoukankan      html  css  js  c++  java
  • 101对称二叉树

    题目: 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    来源: https://leetcode-cn.com/problems/symmetric-tree/

    法一: 自己的代码

    思路: 用栈实现,其实用队列实现也行,没多大差别,官方代码用的递归

    # Definition for a binary tree node.
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    # 执行用时 :44 ms, 在所有 python3 提交中击败了82.50% 的用户
    # 内存消耗 :12.9 MB, 在所有 python3 提交中击败了99.02%的用户
    class Solution:
        def isSymmetric(self, root: TreeNode) -> bool:
            def judge_symmetric(p,q):
                if p is None and q is None:
                    return 2
                elif p is None or q is None or (p.val != q.val):
                    return False
                else:
                    return True
            if root is None:
                return True
            stack = []
            stack.append((root.left, root.right))
            while stack:
                p,q = stack.pop()
                res = judge_symmetric(p,q)
                # 注意这里不能返回1,因为 True == 1 为真
                if res == 2:
                    pass
                elif res:
                    stack.append((p.left, q.right))
                    stack.append((p.right,q.left))
                else:
                    return False
            return True
    if __name__ == '__main__':
        duixiang = Solution()
        root = TreeNode(1)
        a = TreeNode(2)
        b = TreeNode(2)
        root.left = a
        root.right = b
        a.left = TreeNode(4)
        a.right = TreeNode(3)
        b.left = TreeNode(4)
        b.right = TreeNode(3)
        a = duixiang.isSymmetric(root)
        print(a)
    View Code
  • 相关阅读:
    Lookup注解
    解决数据量大,分页查询慢的方案
    一个http的请求分析
    MYSQL
    什么是性能优化
    编码规范随笔
    装饰者模式
    单例模式
    J.U.C并发包(1)
    Java内存模型
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11988888.html
Copyright © 2011-2022 走看看