/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null) return false;
return compare(root,root);
}
boolean compare(TreeNode tree,TreeNode node){
if(tree==null&&node!=null) return false;
if(tree!=null&&node==null) return false;
if(tree==null&&node==null) return true;
if(tree.val!=node.val) return false;
return compare(tree.left,node.right)&&compare(tree.right,node.left);
}
}
自创的失败的层序遍历写法,因为层序进去了但是没有顺序,不知道是左节点还是右节点
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
if(root==null) return false;
q.add(root);
while(!q.isEmpty()){
int n = q.size();
List<Integer> arr = new ArrayList<>();
for(int i=0; i<n; i++){
TreeNode node = q.poll();
arr.add(node.val);
if(node.left!=null) q.add(node.left);
if(node.right!=null) q.add(node.right);
}
int i=0,j=arr.size()-1;
while(i<j&&j>=0&&i!=j){
if(arr.get(i)!=arr.get(j)) return false;
else{
i++;
j--;
}
}
}
return true;
}
}