結點創建
二叉樹創建
我們以‘#’為NULL,我們要把輸入進來的一個字符串轉變為二叉樹,所以我們要記住遞歸的每一步走到數組了哪個位置
所以我們要記住創建過程中用掉的前序個數,并返回,除此之外,還要加上當時的那個結點。要返回兩個返回值,所以用一個結構體來把這兩個返回值包括并一起返回(在c語言中)
我們不要老想著好多結點,我們只看一個結點,一個結點的二叉樹怎么創建,那么整個二叉樹就怎么創建,只要把特殊情況,和結束條件考慮進去就好,
第一個結束條件,就是二叉樹是空樹時
第二個結束條件就是遇到‘#’時,也就是代表NULL的結點時,返回NULL,并返回1,告訴我們用了字符串中的一個元素,下一個操作時就要從下下一個元素開始
然后創建結點,并把根結點的值置為字符串中的第一個元素
創建一個結構體變量用來接受創建左子樹的返回值,每創建一個,數組元素向后移一位,數組個數減一
然后按同樣的方法創建完右子樹,只不過,數組要向后移的位數還要加上左子樹創建時用掉字符串的個數,個數還要減去創建左子樹用掉的數組的個數
## 最后創建完了子樹后,要把他們鏈接在一起,根的左等于創建的左子樹,也就時返回來的值的root。然后再返回,result,返回root,并返回左的個數加右的個數
‘
把以上代碼按行打出來,就可以看到二叉樹的創建。調試就可以看過程。