对称二叉树--迭代
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null){
return true;
}
Stack<TreeNode> sleft = new Stack<>();
Stack<TreeNode> sright = new Stack<>();
TreeNode l = root.left, r=root.right;
while(l!=null || r!=null || sleft.size()!=0 || sright.size()!=0){
while(l!=null && r!=null){
sleft.push(l);
l=l.left;
sright.push(r);
r = r.right;
}
if(l!=null|| r!=null){
return false;
}
l = sleft.peek();
sleft.pop();
r = sright.peek();
sright.pop();
if(l.val!=r.val){
return false;
}
l = l.right;
r = r.left;
}
return true;
}
}