博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 404 Sum of Left Leaves
阅读量:6162 次
发布时间:2019-06-21

本文共 1844 字,大约阅读时间需要 6 分钟。

Problem:

Find the sum of all left leaves in a given binary tree.

Summary:

求左子叶之和。

Analysis:

1. 求左子叶之和,即需要遍历整棵二叉树,常规的方法则为递归。首先我想到的是调用子函数,在子函数中递归,每递归至一个新的节点,首先传入bool类型标记是根节点的左子树还是右子树。若为左子树,且为叶子节点,则将当前节点的value计入和中。

1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     int sumOfLeftLeaves(TreeNode* root) {13         if (root == NULL) {14             return 0;15         }16         17         int sum = 0;18         calLeftLeaves(root->left, true, sum);19         calLeftLeaves(root->right, false, sum);20         21         return sum;22     }23 24 private:25     void calLeftLeaves(TreeNode* root, bool left, int& sum) {26         if (root == NULL) {27             return;28         }29         30         if (left && (root->left == NULL) && (root->right == NULL)) {31             sum += root->val;32         }33         34         calLeftLeaves(root->left, true, sum);35         calLeftLeaves(root->right, false, sum);36     }37 };

 2. 进一步简化代码,试图不掉用子函数,在主函数中进行递归操作。

1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     int sumOfLeftLeaves(TreeNode* root) {13         if (root == NULL) {14             return 0;15         }16         17         if (root->left && root->left->left == NULL && root->left->right == NULL) {18             return root->left->val + sumOfLeftLeaves(root->right);19         }20         21         return sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);22     }23 };

 

转载于:https://www.cnblogs.com/VickyWang/p/5998855.html

你可能感兴趣的文章
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>