513.找树左下角的值
层序依旧秒。递归还是一如既往的想不出来,看完讲解自己敲了一遍。
112.路径总和
做了十几道题了,这是第一道靠自己用递归遍历做出来的题。。。也算进步。
我代码主要问题就是给所有路径都做了判断,不会剪枝操作。其实只要左子树或者右子树返回了一个true就可以一直return true;告诉它的父节点了。
但也要明白我这样写的原理,可以更好体会递归的过程:
class Solution {
public:
int sum = 0;
bool hasPathSum(TreeNode* node, int targetSum) {
if (node == nullptr) return false;
if (node->left == nullptr && node->right == nullptr) {
sum += node->val;
return sum == targetSum;
}
sum += node->val;
bool b1 = false;
bool b2 = false;
if (node->left) {
b1 |= hasPathSum(node->left, targetSum);
sum -= node->left->val;
}
if (node->right) {
b2 |= hasPathSum(node->right, targetSum);
sum -= node->right->val;
}
return b1 | b2;
}
};
106.从中序与后序遍历序列构造二叉树
这道题第一次碰见是真的一点思路都没有。
向量片段(左闭右开)vector<int> newvec(oldvec.begin() + i, oldvec.begin() + j);
1347

被折叠的 条评论
为什么被折叠?



