654.
构造二叉树,一次过,不太难
617.
merge的时候左空/右空/both空都要分开讨论left、right和root的写法
700.
层序遍历,bfs,用queue,只是这里不需要用queue,直接按照直觉左右左右就行,但其本质是层序遍历,只不过因为只有两个子节点且明确方向罢了
98.
这道题不需要在回溯里证明左小右大,直接写出一个序列(bfs or dfs都行),判断是否递增即可
即使是用回溯,也是用中序遍历看是否一直增大
陷阱:只比较局部root和其left、right的合法性,但其实最右的node不仅要大于自己的root,还要大于最上面的root
需要用max记录,max不能初始化为INT_MIN因为最小的node有可能是INT_MIN这样就没办法只保证大于max了。可以用
long long maxVal = LONG_MIN;
如果题目更刁钻LONG_MIN都不行那就只能一直向左 root = root -> left 找到实际的最小值了
int的最小值 = -2^31
C++ STL中的sort函数采用的是快速排序算法(quick sort),其时间复杂度为O(nlogn)