# 数据结构

链表题本身不难,但在代码实现上细节很容易出错,一定要刻意练习。

栈、队列、堆都是非常常用的数据结构,要熟练使用各语言内置的库。堆还分为大顶堆、小顶堆、自定义元素类型堆。

Trie 和并查集都是新型数据结构,各语言没有内置,需要自己实现。并查集有 rank、路径压缩两种优化办法,路径压缩不需要引入额外的数组,比较常用。

# 习题

# 链表

# 堆(优先级队列)

# 栈、队列

#

# 二叉树遍历

先序遍历 (opens new window)由于是尾递归,所以很容易改成迭代。 中序遍历 (opens new window)改迭代比较难,主要方法有颜色标记法、左臂下探法。 后序遍历 (opens new window)改迭代更难,我没研究。

二叉树遍历改迭代感觉没啥意义,有精力还不如先练其它题目。

# 二叉搜索树

二叉搜索树有非常强的递归性质,做这类题更多的是练习递归思维,也是很有意义的。

搜索树和链表相互转换的题目,这类题目要求对递归、链表有扎实基础,刚开始做会有点难,但非常有训练意义:

# Trie

# 并查集

# 哈希表

# 树状数组