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.
自己想半天递归没想出来,先用老办法轮一遍
class Solution {
public:
int cnt = 0;
int sumOfLeftLeaves(TreeNode* root) {
if(!root)
return 0;
queue<TreeNode*> q;
q.push(root);
int ans = 0;
while(!q.empty())
{
int n = q.size();
for(int i = 0; i < n; ++i)
{
TreeNode* p = q.front();
if(p->left)
q.push(p->left);
if(p->right)
q.push(p->right);
if(p->left != NULL && p->left->left == NULL && p->left->right == NULL)
ans += p->left->val;
q.pop();
}
}
return ans;
}
};
好吧 递归瞬间又想出来了。
class Solution {
public:
int ans = 0;
int sumOfLeftLeaves(TreeNode* root) {
if(!root)
return 0;
if(root->left != NULL && root->left->left == NULL && root->left->right == NULL)
ans += root->left->val;
sumOfLeftLeaves(root->left);
sumOfLeftLeaves(root->right);
return ans;
}
};
本文介绍了一种计算给定二叉树中所有左叶子节点值之和的方法。通过两种不同的实现方式——广度优先搜索(BFS)和递归,详细展示了如何有效地解决问题。广度优先搜索通过队列迭代遍历树的每个节点,而递归方法则直接从根节点开始深入子树。
781

被折叠的 条评论
为什么被折叠?



