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

    第101题:对称二叉树

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

    示例:

    二叉树 [1,2,2,3,4,4,3] 是对称的:

    1

    /

    2   2

    / /

    3  4 4  3

    解题思路:递归法

    首先需要确定二叉树镜像对称的条件:左子树根节点值 = 右子树根节点值、左子树根节点的左子树与右子树根节点的右子树镜像对称、左子树根节点的右子树与右子树根节点的左子树镜像对称。

    而且需要明确一点,如果一个二叉树是镜像对称的,那么它和它自己也是互为镜像对称的。

    故若判断一个二叉树是否镜像对称,转换成判断该二叉树与它自己是否镜像对称:即两颗子树根节点是否相等、两颗子树的左子树与右子树是否镜像对称、两颗子树的右子树与左子树是否镜像对称。

    Python代码:

     1 # Definition for a binary tree node.
     2 # class TreeNode(object):
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution(object):
     9     def isSymmetric(self, root):
    10         """
    11         :type root: TreeNode
    12         :rtype: bool
    13         """
    14         return self.checkout(root, root)
    15 
    16     def checkout(self, q, p):
    17         if q == None and p == None:
    18             return True
    19         elif q == None or p == None:
    20             return False
    21         else:
    22             return q.val == p.val and self.checkout(p.left, q.right) and self.checkout(p.right, q.left)
    书痴者文必工,技痴者艺必良
  • 相关阅读:
    Day 09 文件处理
    Day 08 字符编码
    day 07 猜年龄
    Day 07 元组/字典/集合/python深浅拷贝
    Day 06 猜年龄/三级菜单
    并发编程-Atomic的compareAndSet
    并发编程-多线程共享变量不安全
    Spring boot Junit单元测试回滚
    Java 不区分大小写比较字符串
    IDEA 设置html 和js热发布
  • 原文地址:https://www.cnblogs.com/Little-Dandelion/p/13530974.html
Copyright © 2011-2022 走看看