给你一个二叉树的根节点 root , 检查它是否轴对称。
1.1递归
public boolean isSymmetric(TreeNode root) {
if( root == null) {
return true;
}
//调用递归方法
return deepCheck(root.left,root.right);
}
boolean deepCheck(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 deepCheck(left.left, right.right) && deepCheck(left.right, right.left);
}
1.2队列
public boolean isSymmetric(TreeNode root) {
Queue q = new LinkedList();
TreeNode u = root.left;
TreeNode v = root.right;
if(root == null || (u == null && v == null)) {
return true;
}
q.offer(u);//根结点的左右结点放入队列
q.offer(v);
while (!q.isEmpty()) {//如果队列不为空
u = q.poll();
v = q.poll();
if(u == null && v == null) {
continue;
}
if ((u == null || v == null) || (u.val != v.val)) {
return false;
}
q.offer(u.left);
q.offer(v.right);
q.offer(u.right);
q.offer(v.left);
}
return true;
}



