使用宽度优先搜素找所有方案

一个方案=一个路径

  • 求所有方案=求所有路径
  • 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的输入数据。

空字符以”#“表示,利用queue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值