Home

Awesome

play-with-data-structures

Python implementation of imooc course 玩转数据结构, thanks for that great course (instructor liuyubobobo) !

Any pull-request is welcome:)

Any quesitons please email to wangzhe.dut@gmail.com

Included data structures

Array 数组 Stack 栈 Queue 队列 Linked List 链表 Binary Search Tree 二分搜索树 Heap 堆

Segment Tree 线段树 Trie Union Find 并查集

AVL Red Black Tree 红黑树 Hash Table 哈希表

Some course notes

二叉堆:

线段树:O(logn)

Trie:

UnionFind

AVL

          A
        /
      B
    /
new node
          A
         /
        B
         \
      new node

红黑树

哈希表

Miscellaneous

平摊分析:Amortized Analysis, resize时候会引入。 remove_last时resize太过着急,出现复杂度震荡,使用lazy方案: 扩容2倍,缩容1/4(错开)

删除任意节点:

  1. 叶子节点
  2. 只有左孩子或者只有右孩子
  3. 既有做孩子又有右孩子(* Hibbard Deletion *):找被删节点右子树中方的最左节点(最小值)来代替

完全二叉树:不一定是满二叉树,但是缺失的节点一定是在树的右下侧

满二叉树:除了叶子节点,所有节点既有左孩子又有右孩子

图结构:邻接表和邻接矩阵(建图比较简单,但是可以应用图的存储结构的一些性质做一些很好的应用)

抽象数据结构:类似于接口的思想