队列问题

 

102 树的层次遍历

 

自定义的数据结构真的很有用,这样就能将层级也一起记录进去了

 

 

107 从底层到上层的二叉树层次遍历

104 之字型

199

 

 

 

 

 广度优先遍历 最短路径  队列

为什么结束条件就是num==0就可以了?如果不是最短的先遍历到呢?

好像不是耶。。最短的肯定就是先为0了。

因为前面的先算,如果它是最短的,那么会先到0. 同理,先到0的,肯定是最短的。

 

比如当前全是step为1的

【a1】【b1这个是结果的那一条路径】【c1】 当前num全都不是0,如果是0就返回step1了

现在a做了一轮循环,放到后面去了

【b1】【c1】【a2】

【a2】【b2】【c2】 如果a2里面有num为0的,那么直接返回step就是2,如果没有返回的就会变成这样

【b2】【c2】【a3】

······一直到

【a3】【b3】【c3】 如果a3里面有num为0的,那么直接返回step就是3,如果没有返回的就会变成这样

【b3】【c3】【a4】 b3里面存在num为0的了,返回3

 

现在最大的问题只是重复数字了

创建一个visited数组即可。表示访问过的数字。

先访问过的数字,因为是队列,肯定会先判断里面有没有num为0的情况,如果有就返回了。没有的话,后面直接抛弃这个即可。

 

递归怎么算呢?

12 --》11,8,3,然后再求11,8,3的最短,取里面最小的。

 因为有大量重复数字,也可以传一个数组进去判断。

这道题叫最短路径,有点牵强啊

 

这个优化更快。因为将最后一步减去了。

如果只差一步就能到0,直接返回step+1

 

 

 

 

posted @ 2018-05-29 11:50  朋友圈  阅读(232)  评论(0编辑  收藏  举报