建立二叉樹 後序建立二叉樹

2021-06-23 09:31:18 字數 765 閱讀 7383

由後序遍歷可知,輸入順序是左結點->右結點->子樹根結點

比如輸入如下樹:

ab         cde

輸入序列為 * * * e d * b * * c a $

思路:使用棧,對左結點和右結點進行壓棧;

1.當輸入遇到非*,且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點;

2.當輸入遇到非*,但棧中元素小於2,則直接將此元素壓入棧中;

3.當輸入遇到*,壓入null;

4.當輸入遇到$,輸入結束。

#include #include #include typedef struct nodenode;

typedef struct stackstack;

#define stack_increasement 20

#define stack_initsize 10

void init_stack(stack *s)

void push_stack(stack *s, node* d)

}node* pop_stack(stack *s)

void bc(node **t)

else

else

} scanf("%d", &input);

} *t = pop_stack(&s);

}void pre_visit_tree(node *t)

else

}int main(void)

後序建立二叉樹

試題描述 採用使用者輸入元素並基於後序遍歷的方式建立乙個包含6個節點的二叉鍊錶樹,基於遍歷和交換,確保任何父節點的元素值不小於子節點。要求在遍歷函式中採用函式指標。採用後序的方法輸出二叉樹的節點 樣例輸出 cfd bea 樣例輸出 f d b e c a 應該是反了,正確是a c e b d f 這...

建立二叉樹

今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說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...