前中后遍历包括了递归和迭代,其实递归就是先递后归,和stack的先入后出是一样的,所以可以用stack来使用深度遍历,也就是迭代遍历。 ##关于堆:
- 大根堆:根结点大于所有子节点
- 小根堆:根节点小于所有子节点
java中的PriorityQuequ就是一个堆,默认是小根堆,可以重写comparator来实现大根堆。 heap主要解决的问题:最大K个元素、最小K个元素、丑数、中位数、堆排序O(nLogn)问题。
可以用二维数组进行保存,也可以用链表。二维数组结构清晰,方便计算,但是比较消耗内存,链表则相反,结构相对复杂,但是节约内存空间。
- BFS:使用队列进行广度优先遍历,要用一个集合标记已经遍历的元素,不然会重复遍历
- DFS:使用栈进行深度遍历。
所有的数据结构都是基于最基本的数据结构进行扩展的,基本的数据结构:数组,链表。