一、知识点:

二叉树

二、文字分析:

比较左子树的左子节点和右子树的右子节点是否相等,同时比较左子树的右子节点和右子树的左子节点是否相等。如果左右节点的值相等,并且左子树的左子节点和右子树的右子节点对称,并且左子树的右子节点和右子树的左子节点对称,则二叉树是轴对称的。

三、编程语言:

java

四、正确代码:

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }

        return isMirror(root.left, root.right);
    }

    private boolean isMirror(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }

        if (p == null || q == null) {
            return false;
        }

        return (p.val == q.val) && isMirror(p.left, q.right) &&
               isMirror(p.right, q.left);
    }
}