LeetCode刷题(170)~左叶子之和【递归|迭代】

编程入门 行业动态 更新时间:2024-10-11 23:17:25

LeetCode刷题(170)~左叶子之和【<a href=https://www.elefans.com/category/jswz/34/1771140.html style=递归|迭代】"/>

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)~左叶子之和【递归|迭代】

本文发布于:2024-02-07 03:27:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753001.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   之和   叶子   迭代   LeetCode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!