總時間限制
:1000ms
記憶體限制
:
65535kb
描述
給出一顆二叉樹根節點到各葉子節點的路徑,建立這顆二叉樹,輸出中序遍歷的結果。
輸入
第一行輸入乙個整數t,代表測試資料的組數。
對於每組測試資料,第一行輸入乙個整數n,代表二叉樹根節點到各葉子節點的路徑數目。
隨後輸入n行,每行包含乙個字串s, 代表從根節點走向對應葉子節點的路徑。
路徑中每個節點用兩個字元表達:第乙個字元要麼為 『+』 要麼為 『-『, 『+』代表網左孩子方向走,』-』代表往右孩子方向走。第二個字元是乙個大寫的英文本母,表示對應節點編號。
比如 +b-c 代表 從根結點向左走到b節點,再向右走到c節點。
根節點編號始終是字元『a』,不會有重複編號的節點。
字串s長度不超過20 , n <= 26
輸出
每組測試資料,輸出一行,對應二叉樹的中序遍歷結果。
樣例輸入
3
3
+b-d
-c+e
-c-f
2
+b
-c
1
+b+c+d+e樣例輸出
bdaecf
bac
edcba提示二叉樹的節點用結構體儲存。
結構體宣告為:
struct node
;建立乙個新節點通過malloc函式實現
node *node = (node *)malloc(sizeof(node));
如果對於指標使用不熟悉,也可以採用陣列下標來實現。
結構體宣告成以下形式:
struct node
;同時開闢乙個陣列
struct node node[110];
用乙個變數p來控制每次新節點的申請。
#include #include #define maxsize 100
char str[maxsize];
typedef struct node
btree;
btree *b;
void creatree(char *str)
ch++;
}}void inorder (btree *root)
}int main()
inorder(b);
printf("\n");
}return 0;
}
建立二叉樹 後序建立二叉樹
由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...
建立二叉樹
今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...
建立二叉樹
二叉樹在結構上不依賴組織鍊錶 指路法通過根節點與目標節點的相對位置進行定位 define bt left 0 define bt right 1 typedef unsigned long long btpos 結點指標域定義 typedef struct tag btressnode btress...