序言
学习随笔是本人对自己一天的自学回顾,由于本人是非科班出身,不懂很多cs的专业术语,所以难免会有些错误,望各位批评指正,本人定当悉心接受并立即改正。希望自己能够慢慢坚持下去,坚持转行的道路,坚持每天学习的输出。
刷题篇
LeetCode
1.题目
计算给定二叉树的所有左叶子之和。
2.大致思路
依旧是递归的训练
先要明确什么是左叶子,这里我可能有点问题,所以在写条件的时候写错了,筛选不出左叶子
左叶子:首先要是左孩子,并且这个左孩子还要没有左右子树(这里我就是犯迷糊了)
3.代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sumOfLeftLeaves(struct TreeNode* root){
if(root==NULL) return 0;
int res=0;
if(root->left!=NULL&&root->left->left==NULL&&root->left->right==NULL){
//条件这里我一开始只有root->left==NULL&&root->right==NULL
//导致无法筛选出左叶子
res=root->left->val;
}
return res+sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);
}
4.再附上计算所有叶子的代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sumOfLeftLeaves(struct TreeNode* root){
if(root->left==NULL&&root->right==NULL){
return root->val;
}
return sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);
}
无左右子树,自然是叶子结点。
5.多说两句
写代码前,先抓准需求,理清思路再动手。
在我刷题的时候,uzi退役了,说不出的滋味卡在心头,为他遗憾,又为他松了口气。
没了uzi,我熟悉的LPL选手也已经没有了,梦回S3,我的LOL的信仰只剩下Faker了。
希望uzi能好好养伤,身体健康。