二叉树_左叶子之和

[复制链接]
发表于 2025-3-17 10:19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、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. };
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表