给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:

1 2
| 输入:root = [1,2,2,3,4,4,3] 输出:true
|
示例 2:

1 2
| 输入:root = [1,2,2,null,3,null,3] 输出:false
|
提示:
- 树中节点数目在范围
[1, 1000]
内
-100 <= Node.val <= 100
递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return compare(root.left,root.right); }
public boolean compare(TreeNode left, TreeNode right){ if(left==null&&right!=null) return false; else if(left!=null&&right==null) return false; else if(left==null&&right==null) return true; else if(left.val != right.val) return false; return compare(left.left,right.right)&&compare(left.right,right.left); } }
|
迭代(队列实现)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public boolean isSymmetric(TreeNode root) { Queue<TreeNode> que = new LinkedList<>(); que.offer(root.left); que.offer(root.right); while(!que.isEmpty()){ TreeNode left = que.poll(); TreeNode right = que.poll(); if(left==null&&right==null){ continue; } if(left==null||right==null||left.val!=right.val){ return false; } que.offer(left.left); que.offer(right.right); que.offer(left.right); que.offer(right.left); } return true; } }
|