一个方案=一个路径
- 求所有方案=求所有路径
- BFS善于解决求连通块问题
- 把路径看作点,把路径的变化关系看作点的连接关系,这样就把找所有路径问题变成了找所有连通点问题
全子集问题
画搜素树(两种,一个n叉树,一个2叉树(有空集))
二叉树的序列化
什么时候需要序列化?
1.将内存中的数据持久化存储时
内存中重要的数据不能只是呆在内存里,这样断电就没有了,所以需要用一种方式写入硬盘,在需要的时候,能否再从硬盘中读出来在内存中重新创建。
2.网络传输时
机器与机器之间交换数据的时候,不可能互相去读对方的内存。只能将数据变成字符流数据(字符串)后通过网络传输过去。接受的一方再将字符串解析后到内存中。
常用的一些序列化手段:
- XML
- Jsom
- Thrift(by Facebook)
- ProtoBuf(by Google)
一些序列化的例子:
- 比如一个数组,里面都是整数,我们可以简单的序列化为“[1,2,3]”
- 一个整数链表,我们可以序列化为“1->2->3”
- 一个哈希表(HashMap),我们可以序列化为{\"key\":\"value\"}"
序列化算法设计时需要考虑的因素:
- 压缩率。对于网路传输和磁盘存储而言,当然希望更节省。如Thrift,ProtoBuf都是为了更快的传输和节省存储空间而设计的。
- 可读性。我们希望开发人员,能够通过序列化的数据直接看懂原始数据是什么。如Json,LintCode的输入数据。
空字符以”