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;
  }
}