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. 將二元樹化成樹
  • 3. Forest化成Binary Tree
  • 4. Binary Tree化成Forest
  1. 2 - Tree & Binary Tree

2.7 - Tree and Binary Tree Conversion

樹與二元樹相互轉換

1. 將樹化成二元樹

  1. 建立sibling間的平行links

  2. 刪除父點、子點間的links,只保留最左子點和父點的links

  3. 整個樹順時鐘轉45度,即

    1. 最左子點當父點(左子點)

    2. 次右節點當右子點

2. 將二元樹化成樹

  1. 逆時針轉45度,即將右子點全部上拉成次右兄弟

  2. 補上父點與子點的links

  3. 將sibling平行links刪除

3. Forest化成Binary Tree

  1. 將forest中的每棵樹化成二元樹

  2. 將每科二元樹的Root視為sibling,平行串連

  3. 將這些Roots的次右兄弟轉成右子點

4. Binary Tree化成Forest

  1. 將Root的右子點的所有links上拉成為Root的siblings

  2. 刪掉Root的siblings間的平行links

  3. 將每棵二元樹化成樹

Previous2.6 - Thread Binary TreeNext2.8 Advanced Trees

Last updated 6 years ago