zentan66 / daily-coding

日常手写算法,编程题
0 stars 0 forks source link

LeetCode-叶子相似的树 #15

Open zentan66 opened 3 years ago

zentan66 commented 3 years ago

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。

如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

zentan66 commented 3 years ago

编码

/**
 * @param {TreeNode} root1
 * @param {TreeNode} root2
 * @return {boolean}
 */
var leafSimilar = function (root1, root2) {
  const stack = []
  function traverse(p) {
    p.left && traverse(p.left)
    p.right && traverse(p.right)
    if (!p.left && !p.right) {
      stack.push(p.val)
    }
  }
  traverse(root1)
  traverse(root2)
  return (
    stack.slice(0, stack.length / 2).toString() ===
    stack.slice(stack.length / 2).toString()
  )
}