Data Structure
  • 資料結構自學筆記
  • 1 - Stack & Queue
    • 1.1 - Stack
    • 1.2 - Queue
    • 1.3 - Stack and Queue
  • 2 - Tree & Binary Tree
    • 2.1 - Tree
    • 2.2 - Binary Tree
    • 2.3 - Binary Tree Traversal
    • 2.4 - Binary Search Tree
    • 2.5 - Heap
    • 2.6 - Thread Binary Tree
    • 2.7 - Tree and Binary Tree Conversion
    • 2.8 Advanced Trees
      • 2.8.1 - Min-Max Heap
      • 2.8.2 - Deap
      • 2.8.3 - Symmetric Min-Max Heap
      • 2.8.4 - Extended Binary Tree
      • 2.8.5 - AVL Tree
      • 2.8.6 - M-Way Search Tree
      • 2.8.7 - B Tree
      • 2.8.8 - Red-Black Tree
      • 2.8.9 - Optimal Binary Search Tree
      • 2.8.10 - Splay Tree
      • 2.8.11 - Leftest Heap
      • 2.8.12 - Binomial Heap
  • 3 - Search & Sort
    • 3.1 - Searching
    • 3.2 - Elementary Sorting
      • 3.2.1 - Insertion Sort
      • 3.2.2 - Selection Sort
      • 3.2.3 - Bubble Sort
      • 3.2.4 - Shell Sort
    • 3.3 - Sophisticated Sorting
      • 3.3.1 - Quick Sort
      • 3.3.2 - Merge Sort
      • 3.3.3 - Heap Sort
      • 3.3.4 - Radix Sort
      • 3.3.5 - Bucket Sort
      • 3.3.6 - Counting Sort
    • 3.4 - Summary
  • 4 - Graph
    • 4.1 - Intro
    • 4.2 - Graph Traversal
    • 4.3 - Spanning Tree
      • 4.3.1 - Kruskal's algorithm
      • 4.3.2 - Prim's algorithm
      • 4.3.3 - Sollin's algorithm
    • 4.4 - Shortest Path Length
      • 4.4.1 - Dijkstra's algorithm
      • 4.4.2 - Bellman-Ford algorithm
      • 4.4.3 - Floyd-Warshall algorithm
    • 4.5 - AOV Network
    • 4.6 - AOE Network
    • 4.7 - Others
Powered by GitBook
On this page
  • 1. 定義
  • 2. 運作
  1. 2 - Tree & Binary Tree
  2. 2.8 Advanced Trees

2.8.11 - Leftest Heap

Previous2.8.10 - Splay TreeNext2.8.12 - Binomial Heap

Last updated 6 years ago

合併2個Priority Queue(Heap)成一個Priority Queue時間複雜度為O(logn),比Heap的O(n)較快。

1. 定義

x為extended binary tree的ㄧ節點。

  • shortest(x): x到任一外部節點的最短路徑

shortest(x)={0x is an external node1+min⁡{shortest(x的左子點)shortest(x的左子點)x is an internal oddshortest(x)= \begin{cases} 0 & x \text{ is an external node}\\ 1+\min \begin{cases} shortest(x的左子點) &\\ shortest(x的左子點) &\\ \end{cases} & x \text{ is an internal odd} \end{cases}shortest(x)=⎩⎨⎧​01+min{shortest(x的左子點)shortest(x的左子點)​​​x is an external nodex is an internal odd​

  • Leftest Tree: 每一個內部節點的shortest(左子點) ≥ shortest(右子點)

  • Leftest Heap: 是一個Leftest Tree且父點 ≤ 子點

圖示:

2. 運作

2.1 Merge(H1, H2)

  1. 比較H1與H2的root大小,找出最小的root作為新的root

  2. (假設H1的root較小),H1的root作為新的root,且H1的左子樹保留成新的root的左子樹

  3. Merge(H1右子樹, H2),直到變成一棵min tree(子>父)

  4. 檢查是否符合leftest heap性質(shortest(x的左子點)>shortest(x的右子點)),作違反則左右交換node。

2.2 Delete x in a leftest heap

  1. 將min從root取出,得到兩個子樹H1, H2

  2. Merge(H1, H2)

2.3 Insert x in a leftest tree

  1. x視為H2

  2. Merge(H1, H2)