zoukankan      html  css  js  c++  java
  • 剑指Offer58:对称的二叉树(Java)

    参考“hustZa”的牛客解答:https://www.nowcoder.com/questionTerminal/ff05d44dfdb04e1d83bdbdab320efbcb?f=discussion

    思路分析:

    1.递归 2.非递归
    不管是哪种都要注意要判断一个为空另一个不为空的情况,否则会报空指针。left==null&&right!=null||left!=null&&right==null返回false。
    用队列实现非递归,就像做层序遍历,注意左右成对入队。

    递归实现

    public class Solution {
        boolean isSymmetrical(TreeNode pRoot)
        {      
            if(pRoot==null){
                return true;
            }
            TreeNode left=pRoot.left;
            TreeNode right=pRoot.right;
            return process(left,right);
        }
        
        public static boolean process(TreeNode left,TreeNode right){
            if(left==null&&right==null){
                return true;
            }
            if(left==null&&right!=null||left!=null&&right==null){
                return false;
            }
            boolean res=left.val==right.val?true:false;//这行代码之前要排除left或right是null,否则会报空指针
            return res&&process(left.left,right.right)&&process(left.right,right.left);
        }
    }
    

    非递归实现(队列)

    import java.util.LinkedList;
    import java.util.Queue;
    public class Solution {
        boolean isSymmetrical(TreeNode pRoot)
        {   
            if(pRoot==null){
                return true;
            }
            Queue<TreeNode> que=new LinkedList<>();
            que.offer(pRoot.left);
            que.offer(pRoot.right);
            while(!que.isEmpty()){
                TreeNode left=que.poll();
                TreeNode right=que.poll();
                if(left==null&&right==null){
                    continue;
                }
                if(left==null||right==null){
                    return false;
                }
                if(left.val!=right.val){
                    return false;
                }
                que.offer(left.right);//注意:入队要成对入队
                que.offer(right.left);
                que.offer(left.left);
                que.offer(right.right);
            }
            return true;
        }
    }
  • 相关阅读:
    [USACO 5.5]Hidden Password
    [Codeforces 1016F]Road Projects
    再会,OI
    [TJOI 2018]智力竞赛
    [POI 2009]Lyz
    [NOI 2015]品酒大会
    [NOI 2017]蔬菜
    [NOI 2017]整数
    [NOI 2017]游戏
    [NOI 2017]蚯蚓排队
  • 原文地址:https://www.cnblogs.com/dongmm031/p/12322182.html
Copyright © 2011-2022 走看看