LeetCode-101 对称二叉树--迭代

102 阅读1分钟

对称二叉树--迭代

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