相同的树

此博客链接:https://www.cnblogs.com/ping2yingshi/p/13518884.html

相同的树

题目链接:https://leetcode-cn.com/problems/same-tree/

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入: 1 1
/ /
2 3 2 3

[1,2,3], [1,2,3]

输出: true
示例 2:

输入: 1 1
/
2 2

[1,2], [1,null,2]

输出: false
示例 3:

输入: 1 1
/ /
2 1 1 2

[1,2,1], [1,1,2]

输出: false

题解:

       思路:遍历第一个树,然后和第二个树逐个对比,如果有不相同的,则返回flase。然后递归遍历左子树和右子树(如果存在的话),如果一个树的左子树或者右子树存在,而另外一方的左子树或者右子树不存在,则直接返回false.

       代码:

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {

        while(p!=null) 
        {
            if(p.val!=q.val)
            {
                return false;
            }
            if(p.left!=null)`
            {
                if(q.left!=null)
                {
                  isSameTree( p.left,  q.left);
                }
                 else
                   return false;
            }    
            if(q.right!=null)
            {
                if(p.right!=null)
                {
                  isSameTree( p.right,  q.right);
                }
                else
                   return false;
            }
                 
        
        }
       return true;
    }
}

此代码又是超时,还没有找到原因。

   修改代码:(还是超时)

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {

        while(p!=null) 
        {
            if(q!=null&&p.val!=q.val)
            {
                return false;
            }
            if(p.left!=null)
            {
                if(q.left!=null)
                {
                 return isSameTree( p.left,  q.left);
                }
                 else
                   return false;
            }    
            if(q.right!=null)
            {
                if(p.right!=null)
                {
                 return isSameTree( p.right,  q.right);
                }
                else
                   return false;
            }
                 
        
        }
       return true;
    }
}
原文地址:https://www.cnblogs.com/ping2yingshi/p/13518884.html