根據廣義表構建二叉樹

2021-08-04 21:02:17 字數 797 閱讀 6260

如果用陣列形式建樹進行的話很簡單,表面上就不需要用到棧的知識,也比較容易想到,用結構體建樹的方法就要不斷push,pop啊然後感覺一下想不出什麼時候push,pop,或者push pop 什麼,給個樣例:陣列建樹是這樣的開始說明a[i]的左兒子a[2*i+1] 右兒子a[2*i+2]

a(b(d),c)
用陣列構建樹的演算法就是:創乙個陣列 char a[100],取乙個中間值叫做current_index吧初始值為0; 然後不斷讀取這個字串,乙個乙個讀,遇到字母,a[current_index]等於當前字元,     遇到左括號current_index=current_index*2+1,  遇到逗號current_index=current_index+1

遇到右括號  判斷current_index奇偶 如果current_index是奇數就—1再除以二,如果偶數就—2再除以二   

然後如果用結構體建樹的話就要用到棧了,其實用陣列原理上也用到棧了但可以讓人感覺不出來

摘自計算課上的** 幫你們變成彩色了容易看 滑稽  按照**人工跑一遍就能懂他的意思了,但是感覺我還是想不出來

node

*build(

char

*s,int

len)

else

if(flag == right)

break;

} //rootnode = init(c);

c = s[++index]; }

return

rootnode; }

棧的目的就是不斷記錄每一層的跟節點,這是關鍵,感覺知道這個就可以了

根據前序遍歷構建二叉樹

如何只有前序遍歷 帶空節點的 建立二叉樹 1.無法直接切割為左右子樹序列 2.在建立樹的過程中,會得到用掉了多少個節點 返回兩個值,建立好樹的根節點,用掉的個數,用乙個類包起來 public class solution9020 build tree rturn value private stat...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

構建二叉樹

前序遍歷構建二叉樹是根據根節點 左節點 右節點的方式輸入資料,針對乙個節點來說,首先輸入的是根節點,根節點之後的數值應該是其左子節點,之後是右節點,如果是遞迴,則首先是一直設定左節點,之後再依次設定右節點。之前在看二叉樹過程中,見過最多的是輸入個位數字構建二叉樹,今天看到乙個可以輸入多個數字的輸入方...