/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSymmetric(TreeNode root) {
return root != null ? isSymmetric(root.left, root.right) : true;
}
private boolean isSymmetric (TreeNode left, TreeNode right) {
if (left == null && right == null) {
return true;
}
if (left == null || right == null) {
return false;
}
return left.val == right.val
&& isSymmetric(left.left, right.right)
&& isSymmetric(left.right, right.left);
}
}
//Recursive
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
Stack<TreeNode> s = new Stack<TreeNode>();
s.push(root.left);
s.push(root.right);
while (!s.isEmpty()) {
TreeNode a = s.pop();
TreeNode b = s.pop();
if (a == null && b == null) {
continue;
}
if (a == null || b == null) {
return false;
}
if (a.val != b.val) {
return false;
}
s.push(a.left);
s.push(b.right);
s.push(a.right);
s.push(b.left);
}
return true;
}
}