對(duì)于一顆二叉樹,深度優(yōu)先搜索(Depth First Search)是沿著樹的深度遍歷樹的節(jié)點(diǎn)臭杰,盡可能深的搜索樹的分支粤咪。以上面二叉樹為例,深度優(yōu)先搜索的順序
為:ABDECFG渴杆。怎么實(shí)現(xiàn)這個(gè)順序呢 寥枝?深度優(yōu)先搜索二叉樹是先訪問根結(jié)點(diǎn),然后遍歷左子樹接著是遍歷右子樹磁奖,因此我們可以利用堆棧的先進(jìn)后出的特點(diǎn)囊拜,
現(xiàn)將右子樹壓棧,再將左子樹壓棧点寥,這樣左子樹就位于棧頂艾疟,可以保證結(jié)點(diǎn)的左子樹先與右子樹被遍歷来吩。
廣度優(yōu)先搜索(Breadth First Search),又叫寬度優(yōu)先搜索或橫向優(yōu)先搜索敢辩,是從根結(jié)點(diǎn)開始沿著樹的寬度搜索遍歷,上面二叉樹的遍歷順序?yàn)椋篈BCDEFG.
可以利用隊(duì)列實(shí)現(xiàn)廣度優(yōu)先搜索弟疆。
二叉樹深度的性質(zhì):
1戚长、在非空二叉樹中,第i層的結(jié)點(diǎn)總數(shù)不超過2^(i-1) , i>=1怠苔;
2同廉、深度為h的二叉樹最多有2^h -1個(gè)結(jié)點(diǎn)(h>=1),最少有h個(gè)結(jié)點(diǎn);
3迫肖、對(duì)于任意一棵二叉樹锅劝,如果其葉結(jié)點(diǎn)數(shù)為N0,而度數(shù)為2的結(jié)點(diǎn)總數(shù)為N2蟆湖,則N0=N2+1故爵;
4、具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為(㏒ n) +1;
5隅津、有N個(gè)結(jié)點(diǎn)的完全二叉樹各結(jié)點(diǎn)如果用順序方式存儲(chǔ)诬垂,則結(jié)點(diǎn)之間有如下關(guān)系:
若I為結(jié)點(diǎn)編號(hào)則 如果I>1,則其父結(jié)點(diǎn)的編號(hào)為I/2伦仍;
如果2I<=N结窘,則其左孩子(即左子樹的根結(jié)點(diǎn))的編號(hào)為2I;若2*I>N充蓝,則無左孩子隧枫;
參考資料:百度百科—二叉樹