序言
学习随笔是本人对自己一天的自学回顾,由于本人是非科班出身,不懂很多cs的专业术语,所以难免会有些错误,望各位批评指正,本人定当悉心接受并立即改正。希望自己能够慢慢坚持下去,坚持转行的道路,坚持每天学习的输出。
刷题篇
LeetCode
1.题目
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2.大致思路
我最开始考虑的是边界条件,比如两棵树为空,一棵树为空而另一棵树不为空(刷题留下的“后遗症”),再考虑两棵树均不为空的情况。
看到树的题目,首先想到的就是递归,但我有一个没想到的地方就是,因为此题返回值是true / false,所以我以为一直搜寻左子树,它无法回溯去搜寻右子树。
其实想既搜索左子树又搜索右子树很简单,用&&连接就好了。
3.代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if(!p&&!q) return true;
else if(p!=NULL&&q!=NULL){
if(p->val==q->val){
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}
}
else return false;
return 0;
}
4.出现的问题
如果我不加上最后一行的 retrun 0;
LeetCode会报错:control reaches end of non-void function [-Werror=return-type]
加上就不会了,这是为何?望大佬解答,十分感谢。
5.多说两句
总所周知,chem is try ,由于疫情缘故,导致本学期的三门实验课全部挤压在了这最后一个月中,导致全天都在往各个实验室跑,剩下的都是零碎时间。
而又临近期末,马上就到考试周了,基本没怎么学本专业课程的我,由于有抢夺保研名额的压力,所以本专业的学习成绩也不能落下。
更恐怖的是,数模导师要在这个时间段进行数模培训......我裂开
希望我没事。