leetcode-对称二叉树

101. 对称二叉树

题解:

首先我们要清楚,对称二叉树,比较的不是左右节点,而是根节点的左右子树是不是相互翻转的。比较的是两个树。就是说左子树的左节点和右子树的右节点做比较,左子树的右节点和右子树的左节点做比较。

我们使用递归方法。

1.递归函数的参数和返回值

前面已经说过了,比较的是两个树,自然是左子树和右子树节点

返回值是bool类型

compare(left, right)

2.终止条件

节点为空的情况

  • 左节点为空,右节点不为空,不对称,False
  • 左不为空,右为空,不对称,False
  • 左右都为空,True

节点不为空的情况

  • 左右都不为空,节点数值不相同,False

3.单层递归逻辑

  • 比较二叉树的外侧是否对称,传入的是左子树的左孩子,右子树的右节点
  • 比较二叉树的内侧是否对称,传入左节点的右孩子,右节点的左孩子
  • 左右都对称返回True,有一侧不对称返回False
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        def compare(left, right):
            if not left and right:
                return False
            elif left and not right:
                return False
            elif not left and not right:
                return True
            elif left.val != right.val:
                return False
            outsides = compare(left.left, right.right)
            inside = compare(left.right, right.left)
            return outsides and inside
        if not root:
            return True
        return compare(root.left, root.right)

相关推荐

  1. leetcode-对称

    2024-01-13 05:34:01       36 阅读
  2. LeetCode101 对称

    2024-01-13 05:34:01       19 阅读
  3. LeetCode-101-对称

    2024-01-13 05:34:01       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-13 05:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-13 05:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-13 05:34:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-13 05:34:01       20 阅读

热门阅读

  1. 达梦数据库主备集群

    2024-01-13 05:34:01       32 阅读
  2. python sqlserver 数据表转储和恢复

    2024-01-13 05:34:01       38 阅读
  3. 如何创建和管理分支?

    2024-01-13 05:34:01       38 阅读
  4. Linux计划任务管理

    2024-01-13 05:34:01       39 阅读
  5. sqoop的安装与使用

    2024-01-13 05:34:01       23 阅读
  6. 力扣第 379 场周赛VP

    2024-01-13 05:34:01       36 阅读
  7. 创建第一个SpringBoot项目

    2024-01-13 05:34:01       32 阅读
  8. QT:使用QStyle实现QMenu的滚动效果

    2024-01-13 05:34:01       33 阅读