题解 | #对称的二叉树#

对称的二叉树

http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

import java.util.*;
public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
        if(pRoot==null){
            return true;
        }
        Queue<TreeNode> queue = new LinkedList<>();
       if(pRoot.left!=null){
           queue.add(pRoot.left);
       }
       if(pRoot.right!=null){
           queue.add(pRoot.right);
       }
        while(!queue.isEmpty()){
            int size = queue.size();
            if(size%2!=0){
                return false;
            }
            int c = (size-1) >> 1;
            Stack<TreeNode> stack = new Stack<>();
            for(int i = 0;i<size;i++){
                TreeNode poll = queue.poll();
                if(i<=c){
                    stack.add(poll);
                }else{
                    TreeNode pop = stack.pop();
                    if(poll!=null&&pop!=null){
                        if(pop.val!=poll.val){
                            return false;
                        }
                    }else if(poll != null || pop != null){
                        return false;
                    }
                }
                if(poll!=null){
                    queue.add(poll.left);
                    queue.add(poll.right);
                }
            }
        }
        return true;
    }
}
全部评论

相关推荐

狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务