题目:
Find the sum of all left leaves in a given binary tree.
Example:
3 / \ 9 20 / \ 15 7 There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.题目链接
题意:
给一棵二叉树,让你把树上所有左叶子结点的值求和,返回总和。
采用先序遍历的方式,当判断左子节点的时候,判断其是否为叶子结点,假如它是叶子结点,就直接将其val加到ans中,否则递归搜索左子节点,对于右子节点,只要判断是否为空,继续搜索即可。
注意判断当前的node是否为空。
代码如下:
class Solution {
public:
int ans = 0;
bool isLeaves(TreeNode *node) {
return !node->left && !node->right;
}
void dfs(TreeNode *node) {
if (node->left) {
if (isLeaves(node->left)) {
ans += node->left->val;
}
else {
dfs(node->left);
}
}
if (node->right) {
dfs(node->right);
}
}
int sumOfLeftLeaves(TreeNode* root) {
if (root)
dfs(root);
return ans;
}
};