用c语言构建二叉树(重点)
結(jié)點(diǎn)創(chuàng)建
二叉樹(shù)創(chuàng)建
我們以‘#’為NULL,我們要把輸入進(jìn)來(lái)的一個(gè)字符串轉(zhuǎn)變?yōu)槎鏄?shù),所以我們要記住遞歸的每一步走到數(shù)組了哪個(gè)位置
所以我們要記住創(chuàng)建過(guò)程中用掉的前序個(gè)數(shù),并返回,除此之外,還要加上當(dāng)時(shí)的那個(gè)結(jié)點(diǎn)。要返回兩個(gè)返回值,所以用一個(gè)結(jié)構(gòu)體來(lái)把這兩個(gè)返回值包括并一起返回(在c語(yǔ)言中)
我們不要老想著好多結(jié)點(diǎn),我們只看一個(gè)結(jié)點(diǎn),一個(gè)結(jié)點(diǎn)的二叉樹(shù)怎么創(chuàng)建,那么整個(gè)二叉樹(shù)就怎么創(chuàng)建,只要把特殊情況,和結(jié)束條件考慮進(jìn)去就好,
第一個(gè)結(jié)束條件,就是二叉樹(shù)是空樹(shù)時(shí)
第二個(gè)結(jié)束條件就是遇到‘#’時(shí),也就是代表NULL的結(jié)點(diǎn)時(shí),返回NULL,并返回1,告訴我們用了字符串中的一個(gè)元素,下一個(gè)操作時(shí)就要從下下一個(gè)元素開(kāi)始
然后創(chuàng)建結(jié)點(diǎn),并把根結(jié)點(diǎn)的值置為字符串中的第一個(gè)元素
創(chuàng)建一個(gè)結(jié)構(gòu)體變量用來(lái)接受創(chuàng)建左子樹(shù)的返回值,每創(chuàng)建一個(gè),數(shù)組元素向后移一位,數(shù)組個(gè)數(shù)減一
然后按同樣的方法創(chuàng)建完右子樹(shù),只不過(guò),數(shù)組要向后移的位數(shù)還要加上左子樹(shù)創(chuàng)建時(shí)用掉字符串的個(gè)數(shù),個(gè)數(shù)還要減去創(chuàng)建左子樹(shù)用掉的數(shù)組的個(gè)數(shù)
## 最后創(chuàng)建完了子樹(shù)后,要把他們鏈接在一起,根的左等于創(chuàng)建的左子樹(shù),也就時(shí)返回來(lái)的值的root。然后再返回,result,返回root,并返回左的個(gè)數(shù)加右的個(gè)數(shù)
‘
把以上代碼按行打出來(lái),就可以看到二叉樹(shù)的創(chuàng)建。調(diào)試就可以看過(guò)程。
總結(jié)
以上是生活随笔為你收集整理的用c语言构建二叉树(重点)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 习惯性流产怎么检查确诊
- 下一篇: 二叉树的广度优先遍历(层序遍历)