• 第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)
    书痴者文必工,技痴者艺必良
  • 相关阅读:
    [No0000161]IDEA初步接触
    [No0000171]wpf 类层次结构Class Hierarchy
    [No0000160]常用C# 正则表达式大全
    [No000015D]【李笑来 笔记整理】个人商业模式升级
    thinkphp 系统变量
    thinkphp不读取.env文件的键对值
    thinkphp 模板变量输出替换和赋值
    thinkphp 视图view
    thinkphp 响应对象response
    Thinkphp 请求和响应
  • 原文地址:https://www.cnblogs.com/Little-Dandelion/p/13530974.html
Copyright © 2020-2023  润新知