sl1673495/leetcode-javascript

左叶子之和-404

sl1673495 opened this issue · 0 comments

计算给定二叉树的所有左叶子之和。

示例:

    3
   / \
  9  20
    /  \
   15   7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-left-leaves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

用 DFS 的思路,去递归的判断目标节点的左节点是否是叶子节点,如果是的话,就把全局的 sum 加上目标节点的值。然后继续 DFS 目标节点的左右子节点。

let sumOfLeftLeaves = function (root) {
  let sum = 0

  let dfs = (node) => {
    if (!node) return

    if (isLeaf(node.left)) {
      sum += node.left.val
    }

    dfs(node.left)
    dfs(node.right)
  }

  dfs(root)

  return sum
}

function isLeaf(node) {
  return !!node && !node.left && !node.right
}