前往
大廳
主題

ZeroJudge - f675: FJCU_109_Winter_Day2_Lab3 二元搜尋樹 解題心得

Not In My Back Yard | 2021-03-04 00:00:07 | 巴幣 0 | 人氣 278

題目連結:


題目大意:
輸入第一列給定一正整數 N(1 ≦ N ≦ 100),代表接下來有 N 列輸入,每列給定一整數 a (1 ≦ a ≦ 100,這 N 個數字皆相異)。將這 N 個數字依照順序建立一棵二元搜尋樹(Binary Search Tree,BST)。最後一列給定一正整數 q (1 ≦ q ≦ 100),試問 q 是否存在於二元搜尋樹裡?若存在則輸出「Yes」;反之,輸出「No」。

先將給定的 N 個數字由小到大輸出,再依據詢問 q 的結果輸出,參見範例輸出。



範例輸入:
7
17
2
5
12
8
15
13
17


範例輸出:
2
5
8
12
13
15
17
Yes


解題思維:
參見這題建立二元搜尋樹的方法,以及這題提及的二元搜尋樹之性質——其中序探訪為已排序序列,該已排序序列即是所求之輸出。

而尋找數字與建立二元搜尋樹之節點的方式很類似,一直根據 q 與根節點之大小關係往左或往右地往葉節點走。當遇到節點值與 q 一樣便是找到該數;但如果碰到了葉節點後都沒有找到,則代表整棵樹裡沒有 q 值。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作