给你一个二叉树的根节点 root , 检查它是否轴对称。
需求
- 判断是否轴对称
实现
- boolean
代码
class Solution {
/**
* 检查二叉树是否轴对称
* @param root 二叉树根节点
* @return 如果二叉树轴对称返回true,否则返回false
*/
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
return isMirror(root.left, root.right);
}
/**
* 判断两棵子树是否互为镜像
* @param left 左子树根节点
* @param right 右子树根节点
* @return 如果两棵子树互为镜像返回true,否则返回false
*/
private boolean isMirror(TreeNode left, TreeNode right) {
if (left == null && right == null) {
return true;
}
if (left == null || right == null) {
return false;
}
// 当前节点值相等,且左右子树交叉对称
return left.val == right.val
&& isMirror(left.left, right.right)
&& isMirror(left.right, right.left);
}
}
