iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
Software Development

奶茶裡藏的資料結構(Kotlin範例)系列 第 24

當學姊用撲克牌實作二元搜尋樹

  • 分享至 

  • xImage
  •  

「打鐵趁熱,我們馬上來做一個『二元搜尋樹』吧!」

學姊笑嘻嘻地從書包裡掏出了一副撲克牌,還故意像魔術師一樣炫技,來了一段交疊洗牌。

學長身體往後縮了縮。

「欸,我先聲明,我只會當觀眾——」

「別想跑。」學姊一把按住了他的肩膀,笑容燦爛。

就這樣,紙牌遊戲正式開始。

她快速地把牌洗勻,隨手抽了一張放在桌上。

「我們先不管花色,把 J、Q、K 當成十一、十二、十三,就像二十一點一樣。好了,這就是樹的起點——最頂端的 Root。」

說著,她把第一張牌翻開,是——九。

紙牌九被放在離我比較遠的位置。

「好了,這樣對學弟來說就是正著擺的。」

接下來她又抽了兩張,分別是五和十一。

「還記得剛剛我說的規則吧?」

我點點頭,把五放在九的左邊,把十一放在九的右邊。

桌上立刻出現了一個小小的三角形。

五、九、十一,如果只看數字大小而忽略上下位置,正好就是一個遞增排序。

「很好!」學姊繼續從牌堆中抽牌。

這次翻出的是七。她把牌遞給我,還不忘提醒:「一、二排都滿了,這張得放到第三排唷。第三排有四個位置,記住——從上而下,由左到右。」

我深吸一口氣,循著規則一步步比對:七比九小,往左;到五,七比五大,往右。於是我把七放在第三排的第二個位置。

「很好,那我們繼續!」學姊熱情的抽卡。

紙牌一張張抽出來,依照數字大小分別插入到對應的位置,逐漸搭出一棵「樹」。

正當我以為她會把整副牌都用完時,學姊卻忽然停下,語氣裡透著一絲惋惜。

「三十一張牌,已經是極限了。」

「嗯?什麼意思?」我低頭一看,雖然桌上目前已經排出了五排,但下面仍有空位。

「第六排排不滿,好了,現在換你了。」

話音剛落,學長就一臉無奈的在學姊的指揮下,熟練的把這些排好的牌一層層疊起,搭成一座「紙牌屋」。

學長小心翼翼的把紙牌九橫放在最上層,但是看起來非常搖搖欲墜。

我忍不住哈哈大笑起來——這樣的二元搜尋樹,還真是栩栩如生。


上一篇
Tree:你和鄰居沒有直接關係
系列文
奶茶裡藏的資料結構(Kotlin範例)24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言