题目
My way
递归实现BFS
1 | /* |
手动队列BFS
1 | /* |
Just a Blog
1 | /* |
1 | /* |
1 | /** |
加个depth变量,depth为偶数时,[size-1, 0]来存储变量 OR 插入后逆序,因为vector::insert
代价是\(O(N)\),所以一直从头部差,时间cost过大,或者 用deque
,然后用deque
中元素赋值给vector
1 | /** |
1 | /** |
1 | /** |
1 | /** |
有没有办法遍历的时候直接逆序插入呢??
vector<vector<int>>
的对应层数上存储,所以在helper
函数上,需要传参https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-ceng-ci-bian-li-c-by-huang-fu-mai-yan/
1 | /** |
时间:\(O(N)\), 空间:\(O(N)\)
1 | class Solution { |
时间:\(O(N)\), 空间:\(O(N)+O(logN)= O(N)\),因为递归自动压栈需要维护一个栈,故空间上常数项系数更大
1 | /** |
优化递归函数helper
后:
1 | /** |
错误点:
size
, 否则在遍历对应层时,长度不断变大,影响结果vector<vector<int>>
的对应层数上存储,所以在helper
函数上,需要传参https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-de-ceng-ci-bian-li-by-leetcode/
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-ceng-ci-bian-li-c-by-huang-fu-mai-yan/
1 | /** |
要保证返回当前结点的 树高 和 是否平衡。
1 | /* |
1 | /* |
1 | /* |
1 | /** |
手动压栈,存储对应树结点和其高度,然后更新左右子树为空时的树高作为最小深度。
1 | /** |
1 | /** |
https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/solution/li-jie-zhe-dao-ti-de-jie-shu-tiao-jian-by-user7208/
1 | /** |
时间\(O(N)\)仅超过51%,空间\(O(log(N)) + O(N) = O(N)\)超过19%,说明递归压栈吃了不少空间,尝试改成非递归。
1 | class Solution { |
时间\(O(N)\)仅超过51%,空间\(O(N)\)超过50%,手动压栈节省了不少空间。
有没有时间上更优化的解法呢?
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/er-cha-shu-de-zui-da-shen-du-by-leetcode/
我只会第一种循环迭代,后面3种方法均出自leetcode官方题解。
1 | class Solution { |
时间: \(O(log_b(n))\)
空间: \(O(1)\)
将所有的数转化为以3为基数的数字。
1 | public class Solution { |
时间: \(O(log_3n)\)
空间: \(O(log_3n)\)
\[ n = 3^i i = log_3(n)i = \frac{log_b(n)}{log_b(3)} \]
1 | public class Solution { |
为了解决精度错误,应该设置一个较小的epsilon
1 | return (Math.log(n) / Math.log(3) + epsilon) % 1 <= 2 * epsilon; |
在Java中,该变量是4个byte,则最大值为\(\frac{2^{32}}{2} - 1 = 2147483647\),并得到最大的3的幂为\(3^{19} = 1162251467\).
n
是3的幂,则$ 3^{19} % n == 0$必成立1 | public class Solution { |
时间: \(O(1 )\)
空间: \(O( 1)\)
https://leetcode-cn.com/problems/power-of-three/solution/3de-mi-by-leetcode/