兄弟二叉樹簡析

2021-09-17 03:04:45 字數 735 閱讀 4973

一般來說,大學開設的資料結構的課程更偏向於理論,對於具體問題的解決方法需要同學自己去練習掌握。

前幾天,山東科技大學的乙個高中同學需要做設計,這個設計不是一般意義上的小專案而是乙個程式設計練習,但是需要答辯。問題還是那個很經典的問題–家譜。

設計乙個家譜最核心的問題就是家譜的資料結構,毫無疑問,一定是採用樹狀結構。但是,如果某乙個男子有三四個孩子那麼這個節點就要有三四個子節點。從解答問題的角度來說,如果每乙個節點最多有兩個子節點我們才認為這是較好的結構。

於是問題來了:每個節點最多兩個子節點,那麼如果乙個老人有五個孩子,那麼該如何表示?

首先我們來了解一下二叉樹的分支:二叉樹的每個節點的兩個分支指向了兩個子節點,其實這兩個分支的意義並不只是這樣,兩個分支不但可以代表兩個資料,還可以代表兩種資料。

舉個例子:假設這個家族嚴格響應國家計畫生育的基本國策,每個父親最多兩個孩子,那麼每個父節點的兩個分支就可以指向他的兩個孩子。在這個例子中,兩個分支都是指向了父親的孩子,所以這兩個分支表示的是兩個不同的資料。如果某乙個父親有了三個孩子,就代表實際情況**現了乙個父節點有三個不同的孩子,很顯然這種表示方式不能表示有兩個以上孩子的家庭情況。

所以為了能準確地利用二叉樹表示多個孩子,採用「兄弟二叉樹」來實現。具體實現方法如下。:

每乙個節點表示乙個家族成員,節點a的兩個子節點b和c中,b表示a節點的長子,c表示a節點的年齡最大的弟弟。

當乙個父親有五個兒子的時候,父親的b節點指向了他的長子,長子的c節點指向次子,次子的c節點指向犬子以此類推。

二叉樹入門簡析

給出一些二叉樹的入門級 確信 使用方法 1 用遞迴的方式建立乙個完全二叉樹 2void bulid intt 8 9 可以用陣列下標模擬節點編號,用多個陣列來記錄節點資訊 10struct treenode1 a 100001 14 15 也可以與鍊錶類似,用指標儲存二叉樹的父節點 子節點 同時要記...

二叉樹 53 二叉樹 x的兄弟

內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶adt原型檔案,自行設計二叉樹的adt。注意 二叉樹adt的基...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...