404.左叶子之和

https://leetcode-cn.com/problems/sum-of-left-leaves

题目描述

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

示例:

    3
   / \
  9  20
    /  \
   15   7

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

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

方法 1:递归

思路

根据题意,我们要找到所有 左叶子节点,并对它们的值求和。那怎样找到左叶子节点呢?

  1. 首先,节点本身知道自己是不是叶子节点,只要判断 !node.left && !node.right 就好了,但它不知道自己是左/右子节点。

  2. 然后,虽然节点自己不知道自己是左还是右子节点,但是它爸爸知道呀!所以,由它爸爸来告诉它就好了。

复杂度

  • 时间复杂度:$O(N)$,N 为节点数。

  • 空间复杂度:$O(h)$,h 为树的高度。

代码

Python Code

JavaScript Code

方法 2:迭代+栈

思路

其实只要知道怎么判断左叶子节点,剩下的就是遍历二叉树的模板了,爱怎么遍历都行。

复杂度

  • 时间复杂度:$O(N)$,N 为节点数。

  • 空间复杂度:$O(h)$,h 为树的高度。

代码

JavaScript Code

Last updated

Was this helpful?