链接
https://leetcode-cn.com/problems/symmetric-tree/
前言
二叉树总离不开递归,就是怎么需要考虑用递归的问题了
题目
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3]
是对称的。
- 示例
给定二叉树[3,9,20,null,null,15,7]
,
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3]
则不是镜像对称的:
1
/ \
2 2
\ \
3 3
关键
- 二叉树–>递归
思路1
- 左右分置,各个击破
# 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: TreeNode) -> bool:
if not root:
return True
def isSym(root1, root2):
if not root1 and root2:
return True
if root1 and root2 and root1.val==root2.val:
return isSym(root1.left, root2.right) and isSym(root1.right, root2.left)
return isSym(root.left, root.right)
- 二叉树为空也为镜像对称
- 重新定义一个有两个输入的函数来递归,将单输入问题转化为二输入问题