public class Node { int value; Node left; Node right; Node(int x) { value = x; } } public class Solution { public boolean isSymmetric(Node root) { Stack<Node> stack1 = new Stack<>(); Stack<Node> stack2 = new Stack<>(); if (root != null) { stack1.push(root); stack2.push(root); } while (!stack1.isEmpty() && !stack2.isEmpty()) { Node n1 = stack1.pop(); Node n2 = stack2.pop(); if (n1.value != n2.value) { return false; } if (n1.left != null) { if (n2.right == null) { return false; } stack1.push(n1.left); stack2.push(n2.right); } else if (n2.right != null) { return false; } if (n1.right != null) { if (n2.left == null) { return false; } stack1.push(n1.right); stack2.push(n2.left); } else if (n2.left != null) { return false; } } return true; } }