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)
    书痴者文必工,技痴者艺必良
  • 相关阅读:
    常见业务指标
    1006 换个格式输出整数 (Python)
    1004 成绩排名 (Python)
    1003 我要通过! (Python)
    1008 数组元素循环右移问题 (Python)
    如何使用SSH秘钥链接Github
    在windows下如何正确安装curses模块
    面向数据结构C基础知识点(个人向)
    用Python实现链式调用
    python重点串讲
  • 原文地址:https://www.cnblogs.com/Little-Dandelion/p/13530974.html
Copyright © 2011-2022 走看看