力扣101. 对称二叉树
链接
https://leetcode.cn/problems/symmetric-tree/description/
题目描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例1:
此树是对称的。
示例2:
此树也是对称的
示例3:
此树不对称
思路
一颗树对称的前提是,左右子节点同时存在或不存在且:
- left.val == right.val
- left.left.val == right.right.val
- left.right.val == right.left.val
自顶向下,判断每对子节点是不是对称的。
代码
java
class Solution {
public boolean isSymmetric(TreeNode root) {
return isMirror(root, root);
}
public boolean isMirror(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) return true; // 都为空,对称
if (t1 == null || t2 == null) return false; // 其中一个非空,另一个为空,不对称
// 值相等,且左右节点也是对称的
return (t1.val == t2.val)
&& isMirror(t1.right, t2.left)
&& isMirror(t1.left, t2.right);
}
}
面试公司
- 字节跳动