原文首发自 https://www.stdstring.com/2020/02/02/devide-binary-tree/
分治法 vs 遍历法
拿人口统计作为例子,遍历法与分治法的区别如下:
- 如果使用遍历法,做法如下:
人口普查员自己一个人带着一个本子,跑遍全中国挨家挨户的敲门查户口
- 而如果使用分治法,做法如下:
国家统计局的老板想要知道全国人口的总数,于是他找来全国各个省的统计局领导,下派人口普查任务给他们,让他们各自去统计自己省的人口总数。在老板
这儿,他只需要最后将各个省汇报的人口总数结果累加起来,就得到了全国人口的数目。
然后每个省的领导,又找来省里各个市的领导,让各个市去做人口统计。
市找县,县找镇,镇找乡。最后乡里的干部挨家挨户敲门去查户口。
在这里,把全国的任务拆分为省级的任务的过程,就是分治法中分的这个步骤。把各个小任务派发给别人去完成的过程,就是分治法中
治的这个步骤。但是事实上我们还有第三个步骤,就是将小任务的结果合并到一起的过程,合这个步骤。因此如果我来取名字的话,我会叫这个算法:分治合算法。
递归 vs 分治法 vs 遍历法
联系
分治法与遍历法是两种常见的递归方法。