leetcode 算法题100 (简单021) 相同的树

leetcode 算法题100 (简单021) 相同的树

  • 题目介绍
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
  • 示例

输入:

        1         1
       / \       / \
      2   3     2   3

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

输出: true

输入:

     1            1
     /             \
    2               2

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

输出: false

输入:

       1         1
      / \       / \
     2   1     1   2

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

输出: false

  • 解法一
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {boolean}
 */
//中序
var isSameTree = function(p, q) {
  if(!q) {
    return !p;
  }
  if(!p) {
    return false;
  }
  return p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
};

执行用时 : 76ms, 在所有 JavaScript 提交中击败了70.75%的用户

内存消耗 : 33.8MB, 在所有 JavaScript 提交中击败了20.07%的用户

  • 解法二
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {boolean}
 */
//前序
var isSameTree = function(p, q) {
  if(!q) {
    return !p;
  }
  if(!p) {
    return false;
  }
  return isSameTree(p.left, q.left) && p.val === q.val && isSameTree(p.right, q.right) ;
};

执行用时 : 60ms, 在所有 JavaScript 提交中击败了99.18的用户

内存消耗 : 33.7MB, 在所有 JavaScript 提交中击败了32.20%的用户

  • 解法三
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {boolean}
 */
//后序
var isSameTree = function(p, q) {
  if(!q) {
    return !p;
  }
  if(!p) {
    return false;
  }
  return isSameTree(p.left, q.left) && p.val === q.val && isSameTree(p.right, q.right) ;
};

执行用时 : 72ms, 在所有 JavaScript 提交中击败了97.73的用户

内存消耗 : 33.7MB, 在所有 JavaScript 提交中击败了22.35%的用户

  • 注意

使用的树的 前序 中序 后序遍历比较,实际算法的效率和内层消耗应该和树的结构有关

你可能感兴趣的:(#,leetcode,简单,leetcode)