leetcode 算法题872 (简单227) 叶子相似的树

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/FYuu95100/article/details/102711280

leetcode 算法题872 (简单227) 叶子相似的树

  • 题目介绍
请考虑一颗二叉树上所有的叶子,
这些叶子的值按从左到右的顺序排列形成一个 叶值序列
举个例子,如上图所示,
给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。
如果有两颗二叉树的叶值序列是相同,
那么我们就认为它们是 叶相似 的。
如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,
则返回 true;否则返回 false 。
  • 提示

给定的两颗树可能会有 1 到 100 个结点。

  • 解法一
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root1
 * @param {TreeNode} root2
 * @return {boolean}
 */
var leafSimilar = function(root1, root2) {
   let temp1 = [], temp2 = [], i = 0;
   setSeries(root1, temp1); 
   setSeries(root2, temp2); 
   if(temp1.length !== temp2.length) {
     return false;
   }
   while(i < temp1.length) {
     if(temp1[i] !== temp2[i++]) {
       return false;
     }
   }
   return true;
};

const setSeries = (node, temp) => {
  if(node.left && node.right) {
    setSeries(node.left, temp); 
    setSeries(node.right, temp); 
    return;
  } 
  if(node.left || node.right) {
    setSeries(node.left || node.right, temp);
    return;
  }
  temp.push(node.val);
}

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

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

猜你喜欢

转载自blog.csdn.net/FYuu95100/article/details/102711280