leetCode每日一练之——相同的树

210 阅读1分钟

简单题目,思路就是一边便利一边对比,若遇到不同则跳出。以下是代码。 

方法:时间复杂度O(min(m,n));

var isSameTree = function(p, q) {
    var res = true;
    var result = function(p, q) {
      // 先序便利对比
      if (!q && !p) return;
      // if ((!q || !p) || q.val !== p.val) { 
      if (!((q && q.val) === (p && p.val))) { 
        res = false;
        return;
      }
      result(q.left, p.left);
      result(q.right, p.right);
    }
    result(p, q);
    return res;
};

优化一下:

var isSameTree = function(p, q) {
    var res = true;
    var result = function(p, q) {
      if (!res) return;
      // 先序便利对比
      if (!q && !p) return;
      // if ((!q || !p) || q.val !== p.val) { 
      if (!((q && q.val) === (p && p.val))) { 
        res = false;
        return;
      }
      result(q.left, p.left);
      result(q.right, p.right);
    }
    result(p, q);
    return res;
};