二叉树_左叶子之和

打印 上一主题 下一主题

主题 983|帖子 983|积分 2949


一、leetcode-404

左叶子之和
给定二叉树的根节点 root ,返回全部左叶子之和。
输入:root = [3,9,20,null,null,15,7]
输出:24

二、题解

1.引库

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <queue>
  5. #include <stack>
  6. #include <algorithm>
  7. #include <string>
  8. #include <map>
  9. #include <set>
  10. #include <vector>
  11. using namespace std;
复制代码
2.代码

  1. class Solution {
  2. public:
  3.     int sumOfLeftLeaves(TreeNode* root) {
  4.         if(root==NULL) return 0;
  5.         if(root->left==NULL&&root->right==NULL) return 0;
  6.         //当左子树就是叶子节点就直接加和,否则递归
  7.         int leftsum=0;
  8.         if(root->left&&root->left->left==NULL&&root->left->right==NULL)
  9.             leftsum=root->left->val;
  10.         else leftsum=sumOfLeftLeaves(root->left);
  11.         int rightsum=sumOfLeftLeaves(root->right);
  12.         return leftsum+rightsum;
  13.     }
  14. };
复制代码
迭代法
  1. class Solution {
  2. public:
  3.     int sumOfLeftLeaves(TreeNode* root) {
  4.         if(root==NULL) return 0;
  5.         stack<TreeNode *> st;
  6.         st.push(root);
  7.         int result=0;
  8.         while(!st.empty()){
  9.             TreeNode *node=st.top();
  10.             st.pop();
  11.             if(node->left&&node->left->left==NULL&&node->left->right==NULL)
  12.                 result+=node->left->val;
  13.             if(node->left) st.push(node->left);
  14.             if(node->right) st.push(node->right);
  15.         }
  16.         return result;
  17.     }
  18. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表