/**
* 判断二叉树是否对称
* @param root
* @return
*/
public static boolean isMirror(Node root) {
return isSymmetrical(root.left, root.right);
}
/**
* 两个节点结构是否相等
* @param p
* @param q
* @return
*/
public static boolean isSymmetrical(Node p, Node q) {
// 有一个节点为空,另一个节点不为空,就不是对称
if (p == null ^ q == null) {
return false;
}
// 如果两个节点都是空,就是对称
if (p == null && q == null) {
return true;
}
// 如果两个节点都不为空,比较值和子节点
return p.value == q.value && isSymmetrical(p.left, q.right) && isSymmetrical(p.right, q.left);
}
```
```