层级结构

172 阅读2分钟

前面幾天都在講線性資料結構,現在開始要來講非線性的資料結構了,今天就先從樹狀結構講起

最近假日的風景區常常爆滿,大家都到戶外踏青去了,爬爬山,走走路,欣賞大自然的風景,熱了就道樹下乘涼,而你有注意過為什麼可以長得如此茂密或高大嗎?樹的主要由根、莖、葉、花、果實、種子組成,各個部位都會隨著時間與氣候的變化而生長,我們快速地從一棵樹的狀態判斷出它的生長情況,例如分支多不多,樹葉多不多

image.png

最後就是我們常見的資料夾了,其實也是一層一層的進行儲存與管理

image.png

樹狀結構是一種階層式的架構,而非線性結構,資料已經沒有前後的關係,只有上對下,或下對上的關係,像是爸爸與小孩之間的關係

你假日的行程常常遇到選擇障礙嗎?到底要不要出去玩?如果出去玩是要找個室內環境,還是戶外呢?我們常常用要不要或來做決定,當事情變成二分法的時候似乎比較簡單,而這樣的思考過程,就是一種決策的方式,透過圖表可以將思考具體化,如下圖,是不是長得很像昨天的呢? 是與否的決策方式,最多只有兩個選項

image.png

連結串列表示法

之前我們有介紹過[連結串列],裡面有提到一個節點,可以含有兩個指標,剛好在樹狀結構中就能使用指標分別指向左邊的子節點右邊的子節點

image.png

二元樹中序走訪

例如當我們做加法的時候,首先會準備兩個數字 3 和 5,然後會先在計算機按 3 再按 + 號,最後按 5 ,計算機畫面就會出現 8 ,而當我們在表達一個加法的時候,會將兩個數字分別放在加法符號左右兩側,公式會長這樣 3 + 5,這是我們很熟悉的四則運算,那這個放在中間的四則運算就像是樹根,而左右兩邊的樹字就像是左右節點<運算元 1> < 運算子 > < 運算元 2 >

所以中序訪問結果為: 4 + 8 - 5 * 2image.png

小美的男朋友是一位工程師,他用了二元樹中序走訪寫了一封情書要給小美, image.png