leetcode 20



此时栈顶的左括号和当前遍历的右括号匹配,故将左括号从栈顶pop出。


leetcode 150:


leetcode 71

栈和递归的关系
递归算法:二叉树中的算法
、二叉树的前序遍历,中序遍历,后序遍历
前序遍历代码:

练习题:使用栈模拟系统栈,写出非递归程序
模拟在栈中推入命令

访问根节点:

相应的推入
此时栈顶是打印1,1出来,然后访问1的左孩子,其实就是访问点2

访问后,相应的将2的3个命令相应的推入

访问2的左右孩子,由于均为空,直接取出命令,最后访问1的右孩子3

将3 的三条命令推入栈,然后循环结束


练习:经典非递归方法,去理解递归过程
练习题:leetcode:

1 理解整形列表

迭代遍历: hasNext判断是否遍历到了最后一项
next()去访问后面一个元素

6-46 队列
队列的基本应用-广度优先便利
树;层次遍历
图;无权图的最短路径
leetcode 102


关键点:标记点在那个层

练习题:
leetcode 107

leetcode 103

leetcode 199

BFS(广度优先遍历)和图的最短路径
leetocode 279

最少的平方数:
思考:如果没有解怎么办?
是否可能没有解?不可能,因为有1
边界情况是否为真的边界情况



大数指向小数
数据对:第一个数表示具体第几个数字 第二数表示经历了几段路径到达该点

性能问题:num-i*i会重复推入队列,冗余的节点
改进:

这个相对上一版会快3倍左右
leetcode 127


衍生题:
leetcode 126

使用队列求解无权图最短路径
优先队列
优先队列的底层实现:堆
对于堆的底层实现,白板编程
使用优先队列解决算法问题:


优先对列屏蔽了堆的具体实现过程
优先队列,默认情况下是最大堆:从大到小


最小堆的实现:从小到大


如果自定义了:

个位数越大越靠前


6-7
leetcode 347







当其中的n和k比较接近时,可以采用以下的思路:

leetcode 23

k分的归并排序
具体k去多大的时候,该归并排序最优