当前位置: 面试刷题>> 左叶子的和 (经典算法题500道)
### 题目描述补充
**题目:左叶子的和**
给定一棵二叉树,我们需要找到所有左叶子节点的和。左叶子节点是指那些没有右子节点的叶子节点。
**示例**:
考虑以下二叉树:
```
3
/ \
9 20
/ \
15 7
```
在这个例子中,左叶子节点是 `9` 和 `15`,所以返回的结果是 `24`。
### PHP 示例代码
```php
class TreeNode {
public $val;
public $left;
public $right;
function __construct($val = 0, $left = null, $right = null) {
$this->val = $val;
$this->left = $left;
$this->right = $right;
}
}
function sumOfLeftLeaves($root) {
if ($root === null) {
return 0;
}
$sum = 0;
if ($root->left !== null && $root->left->left === null && $root->left->right === null) {
$sum += $root->left->val;
}
$sum += sumOfLeftLeaves($root->left);
$sum += sumOfLeftLeaves($root->right); // 注意,右子树也可能有左叶子节点
return $sum;
}
// 示例用法
$root = new TreeNode(3);
$root->left = new TreeNode(9);
$root->right = new TreeNode(20);
$root->right->left = new TreeNode(15);
$root->right->right = new TreeNode(7);
echo sumOfLeftLeaves($root); // 输出 24
```
### Python 示例代码
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sumOfLeftLeaves(root):
if not root:
return 0
sum_ = 0
if root.left and not root.left.left and not root.left.right:
sum_ += root.left.val
sum_ += sumOfLeftLeaves(root.left)
sum_ += sumOfLeftLeaves(root.right)
return sum_
# 示例用法
root = TreeNode(3)
root.left = TreeNode(9)
root.right = TreeNode(20)
root.right.left = TreeNode(15)
root.right.right = TreeNode(7)
print(sumOfLeftLeaves(root)) # 输出 24
```
### JavaScript 示例代码
```javascript
function TreeNode(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right)
}
function sumOfLeftLeaves(root) {
if (!root) {
return 0;
}
let sum = 0;
if (root.left && !root.left.left && !root.left.right) {
sum += root.left.val;
}
sum += sumOfLeftLeaves(root.left);
sum += sumOfLeftLeaves(root.right);
return sum;
}
// 示例用法
const root = new TreeNode(3);
root.left = new TreeNode(9);
root.right = new TreeNode(20);
root.right.left = new TreeNode(15);
root.right.right = new TreeNode(7);
console.log(sumOfLeftLeaves(root)); // 输出 24
```
**码小课网站中有更多相关内容分享给大家学习**,包含但不限于数据结构、算法、面试技巧等,希望大家能够从中受益,不断提升自己的编程能力。