Reference
理解 C/C++ 中的左值和右值 | nettee 的 blog
C++中左值和右值的理解 - 知乎 (zhihu.com)
Problem: 491. 非递减子序列
使用回溯算法解决,需要注意的是返回条件,题目要求子序列大小大于2
1 | if (path.size() >= 2) |
Problem: 617. 合并二叉树
此题较为简单,用先序遍历同时遍历两个树的节点,需要注意的一点是返回条件:
1 | if (root1 == nullptr) |
Problem: 106. 从中序与后序遍历序列构造二叉树
不难,但是要理清楚顺序,还要确定切割区间,我们保持左闭右开的区间,因为vector也是左闭右开begin(),end()
。
Problem: 654. 最大二叉树
这里没有搞明白vector<int> left(nums.begin(), nums.begin() + maxIndex);
为什么是nums.begin() + maxIndex
而不是nums.begin() + maxIndex - 1
时间复杂度:
Problem: 513. 找树左下角的值
这道题用层序遍历非常简单,左下角的值也就是每一层最左边的值,我们只需要遍历时,记录每一层的大小,将第一个数记录下来就可以了。
记得有一道层序遍历的题目与之非常相识。忘记是那一道题目了。
Problem: 112. 路径总和
仍然是万能的回溯大法,因为无法使用for循环,我们只能一条一条的写:
1 | if (node->left != nullptr) { |