100. Same Tree

来源:互联网 发布:全文翻译的软件 编辑:程序博客网 时间:2024/06/13 05:40

迭代方法:

public class Solution {

    public boolean isSameTree(TreeNode p, TreeNode q) {
        Stack<TreeNode> stackp=new Stack<>();
        Stack<TreeNode> stackq=new Stack<>();
       
        if((p==null)^(q==null)){    //判断方法
        return  false;
        }
         if(p!=null)
        stackp.push(p);
        if(q!=null)
        stackq.push(q);
        TreeNode pp=null;
        TreeNode qq=null;
        
        while(!stackp.isEmpty()&!stackq.isEmpty()){
        pp=stackp.pop();
        qq=stackq.pop();
        if(pp.val!=qq.val){
        return false;
        }
        if(((pp.left==null)^(qq.left==null))||((pp.right==null)^(qq.right==null))){
        return false;
        }
        if(pp.left!=null)
              stackp.push(pp.left);
        if(pp.right!=null)
              stackp.push(pp.right);
        if(qq.left!=null)
              stackq.push(qq.left);
        if(qq.right!=null)
              stackq.push(qq.right);
        
    }
        
        return true;


    }

}

递归方法:

public class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if((p==null)&&(q==null)){
         return true;
          }
        if((p==null)^(q==null)){
         return false;
          }
          if(p.val!=q.val) return false;
          return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);


    }
}


递归写起来简洁太多了,但总要磕磕碰碰才能写对。。。。

0 0
原创粉丝点击