試題描述
採用使用者輸入元素並基於後序遍歷的方式建立乙個包含6個節點的二叉鍊錶樹,基於遍歷和交換,確保任何父節點的元素值不小於子節點。要求在遍歷函式中採用函式指標。採用後序的方法輸出二叉樹的節點
樣例輸出
…cfd…bea
樣例輸出
f d b e c a 應該是反了,正確是a c e b d f
這道題的難點是需要從葉子節點進行回溯比較,我還沒有想到比較簡單的做法,歡迎交流。
演算法思路:
1.後序建立二叉樹,
2.把二叉樹轉變為最大堆進行調整,
3.後序遍歷輸出。
#include
#include
#include
using
namespace std;
typedef
struct treenode *tree;
typedef
char elementtype;
stack<
char
> sta;
struct treenode
;typedef
struct nodemaxtree;
maxtree createheap()
maxtree maxheap=
createheap()
;tree createtree()
else
return t;
}maxtree insertheap
(maxtree tmp,
char c)
tmp.array[t]
=c;return tmp;
}void
transform
(tree t)
void
reaorder
(int size)
intmain
(int argc,
char
const
*ar**)
tree t =
createtree()
;transform
(t);
reaorder(1
);return0;
}
建立二叉樹 後序建立二叉樹
由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...
資料結構 後序建立二叉樹
二叉樹的前,中,後序遍歷 以及通過補 字元補充二叉樹空分支,按照前序順序構造二叉樹,這些都比較簡單,我這就不過多地贅述 直接貼 include stdafx.h includeusing namespace std typedef char datatype typedef struct node ...
建立二叉樹
今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...