題目連結:
題目大意:
輸入第一列給定一正整數 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 值。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。