二叉树——对称二叉树
题目:给你一个二叉树的根节点 root , 检查它是否轴对称,检查结果用布尔值返回。
核心逻辑
对称二叉树 = 左子树和右子树互为镜像
- 左节点的左孩子<->右节点的右孩子
- 左节点的右孩子<->右节点的左孩子
根据核心逻辑可以判断这道题的题解应该用递归的思路
完整代码实现如下:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
public boolean isSymmetric(TreeNode root) {
// 根为空直接对称
if (root == null) return true;
// 判断左右子树是否镜像
return isMirror(root.left, root.right);
}
// 辅助函数:判断两个树是否镜像
private boolean isMirror(TreeNode left, TreeNode right) {
// 都为空 → 对称
if (left == null && right == null) return true;
// 一个空一个不空 → 不对称
if (left == null || right == null) return false;
// 值不同 → 不对称
if (left.val != right.val) return false;
// 关键:左的左 ↔ 右的右,左的右 ↔ 右的左
return isMirror(left.left, right.right)
&& isMirror(left.right, right.left);
}
}
浙公网安备 33010602011771号