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

    101. Symmetric Tree

    Difficulty: 简单

    给定一个二叉树,检查它是否是镜像对称的。

    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

        1
       / 
      2   2
     /  / 
    3  4 4  3
    

    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

        1
       / 
      2   2
          
       3    3
    

    进阶:

    你可以运用递归和迭代两种方法解决这个问题吗?

    Solution

    Language: 全部题目
    错误解法一:[1,2,2,2,null,2],无法通过,中序遍历这棵树返回的列表结果可能是[2,2,1,2,2]而不是[2,2,'',1,2,2,'']

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    ​
    class Solution:
        def isSymmetric(self, root: TreeNode) -> bool:
            nodeList = inOrderTraversal(root)
            if len(nodeList) % 2 == 0: # 如果列表的长度不是偶数,说明不是对称的树
                return False
            else:
                for i in range(len(nodeList) // 2):
                    if nodeList[i] != nodeList[len(nodeList)-1-i]:
                        return False
                return True
            
    ​
    def inOrderTraversal(tree):
        if not tree:
            return [""]
        else:
            l = inOrderTraversal(tree.left)
            d = [""] if not tree.val else [tree.val]
            r = inOrderTraversal(tree.right)
            return l + d + r
    

    正确解法(看的答案),依然还是递归的方法

    class Solution:
        def isSymmetric(self, root: TreeNode) -> bool:
            if not root:
                return True
            else:
                return isSymmetricHelper(root.left, root.right)
            
    
    def isSymmetricHelper(lTree, rTree):
        if not lTree or not rTree:
            return lTree == rTree
        if lTree.val != rTree.val:
            return False
        return isSymmetricHelper(lTree.left, rTree.right) and isSymmetricHelper(lTree.right, rTree.left)
    
  • 相关阅读:
    vs要用报表功能
    汉字与字节
    php 实现excel导入导出
    php 判断是否是手机端和电脑端访问
    php getimagesize image_type_to_extension 等函数不能用
    php 处理base64图片信息
    php 百度编辑器ueditor-dev-1.5.0编译版细节流程
    react 可拖拽改变位置和大小的弹窗
    Java 进制转换
    Java自动装箱测试
  • 原文地址:https://www.cnblogs.com/swordspoet/p/13993780.html
Copyright © 2011-2022 走看看