classSolution{publicbooleanisSymmetric(TreeNode root){returndfs(root.left, root.right);}privatebooleandfs(TreeNode left,TreeNode right){// Reach the endif(left ==null&& right ==null){returntrue;}// One of them reach the end but other one hasntif(left ==null|| right ==null){returnfalse;}// Check their values, check left and right sub node valuesreturn left.val == right.val &&dfs(left.left, right.right)&&dfs(left.right, right.left);}}
2024/10/26
這次想到的是BFS,也是蠻好寫的
classSolution{publicbooleanisSymmetric(TreeNode root){Queue<TreeNode> q =newLinkedList();// Skip the root
q.offer(root.left);
q.offer(root.right);while(!q.isEmpty()){int size = q.size();TreeNode left = q.poll();TreeNode right = q.poll();// Reached the leaf, skip itif(left ==null&& right ==null)continue;// One of them is null, means not the sameif(left ==null|| right ==null)returnfalse;if(left.val != right.val)returnfalse;// Offer the following nodes
q.offer(left.left);
q.offer(right.right);
q.offer(left.right);
q.offer(right.left);}returntrue;}}