递归|迭代】"/>
LeetCode刷题(170)~左叶子之和【递归|迭代】
题目描述
计算给定二叉树的所有左叶子之和。
示例:3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
解答 By 海轰
提交代码(递归)
void help(TreeNode* root, int& ans){if(root==NULL)return ;if(root->left) {if(root->left->left==NULL&&root->left->right==NULL)ans+=root->left->val;help(root->left,ans);}if(root->right) help(root->right,ans);}int sumOfLeftLeaves(TreeNode* root) {int ans=0;help(root,ans);return ans;}
运行结果
提交代码(递归)
注:
左叶子:如果左节点不为空,且左节点没有左右孩子,那么这个节点就是左叶子
int sumOfLeftLeaves(TreeNode* root) {if(root==NULL) return 0;int sum=0;if(root->left!=NULL&&root->left->left==NULL&&root->left->right==NULL)sum+=root->left->val;return sum+sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);}
运行结果
提交代码(迭代)
int sumOfLeftLeaves(TreeNode* root) {if(root==NULL) return 0;stack<TreeNode*> s;int sum=0;s.push(root);while(!s.empty()){TreeNode* temp=s.top();s.pop();if(temp->left!=NULL&&temp->left->left==NULL&&temp->left->right==NULL)sum+=temp->left->val;if(temp->left) s.push(temp->left);if(temp->right) s.push(temp->right);}return sum;}
运行结果
题目来源
来源:力扣(LeetCode)
链接:
更多推荐
LeetCode刷题(170)~左叶子之和【递归|迭代】
发布评论