对称二叉树
Symmetric Tree
本机进度仅保存在当前浏览器
题目描述
给你一个二叉树的根节点 root,检查它是否轴对称(镜像对称)。
示例:[1, 2, 2, 3, 4, 4, 3] 是对称的,返回 true。
解题思路
- 对称等价于:左子树与右子树互为镜像。把问题转化为比较两棵树。
- 两棵树互为镜像的条件:根值相等,且"左的左"与"右的右"互为镜像、"左的右"与"右的左"互为镜像。
- 递归比较两个节点即可;迭代版用队列成对入队,本质相同。
参考实现
查看参考实现Python · 建议先自行作答
def isSymmetric(root):
def isMirror(a, b):
# 双方都空对称,单方空不对称
if not a and not b:
return True
if not a or not b or a.val != b.val:
return False
# 外侧对外侧,内侧对内侧
return isMirror(a.left, b.right) and isMirror(a.right, b.left)
return isMirror(root, root) if root else True