iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
自我挑戰組

資料結構系列 第 24

【Data Structure】Day24: 二元樹的轉換(Transformation)

  • 分享至 

  • xImage
  •  

還記得我們曾經討論過,當 Tree's Degree 為 K 時,會浪費 (K - 1) / K 比例的空間。因此我們將 Tree's Degree 減少成 2,可以最小化空間浪費,所以我們介紹了 Binary Tree。

今天我們要來講,如何把 Tree 和 Forest 轉換成 Binary Tree

樹化二元樹

  1. 先建立橫向的 sibling 鏈結
  2. 只保留最左邊的 parent-child link,其他全部刪除
  3. 順時針旋轉 45 度,也就是 sibling 當 Right Child, 原本保留的 child 當 left child

來看個例子:
https://ithelp.ithome.com.tw/upload/images/20240929/20169117dNW8PhO1pJ.jpg
因為 root 沒有 sibling 可以成為其右子樹,因此 Tree 轉換的二元樹,必定為 Left skewed Tree

如果要將二元樹化成樹,只要反向操作即可。

森林化二元樹

因為森林是多棵樹的集合

  1. 先將每棵樹都化成 Binary Tree
  2. 將所有 root 連接起來
  3. 順時針旋轉 45 度,也就是 right child 是其他樹,left child 則為自己的樹

一樣來看個例子:
https://ithelp.ithome.com.tw/upload/images/20240929/20169117OD3Ygo3ZCQ.jpg


上一篇
【Data Structure】Day23: Huffman Algorithm
下一篇
【Data Structure】Day25: 外擴樹(Splay Tree)
系列文
資料結構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言