二叉樹的建立及中後序遍歷
阿新 • • 發佈:2018-12-12
Problem Description
按照給定的擴充套件二叉樹前序遍歷序列建立相應的非空二叉樹,要求採用二叉連結串列進行儲存表示,並對其進行中序和後序遍歷,輸出中後序遍歷序列後請銷燬二叉連結串列以釋放記憶體。
Input
第一行為一個整數n,表示以下有n組資料,每組資料佔一行,為擴充套件二叉樹的前序遍歷序列。
Output
輸出該二叉樹的中序和後序遍歷序列,每個序列佔一行,每兩組輸出之間有一換行。
Sample Input
3
AB#D##C##
AB##C#D##
ABD##E##C#F##
Sample Output
BDAC
DBCA
BACD
BDCA
DBEACF
DEBFCA
#include<iostream> using namespace std; struct BiNode { char data; BiNode *lchild, *rchild; }; BiNode *creat() { BiNode *bt = NULL; char ch; cin >> ch; if (ch != '#') { bt = new BiNode; bt->data = ch; bt->lchild = creat(); bt->rchild = creat(); } return bt; } void InOrder(BiNode *bt) { if (bt) { InOrder(bt->lchild); cout << bt->data; InOrder(bt->rchild); } } void PostOrder(BiNode *bt) { if (bt) { PostOrder(bt->lchild); PostOrder(bt->rchild); cout << bt->data; } } void Release(BiNode *bt) { if (bt) { Release(bt->lchild); Release(bt->rchild); delete bt; } } int main() { int n; BiNode *root; while (cin >> n) { while (n--) { root = creat(); InOrder(root); cout << endl; PostOrder(root); cout << endl; if (n != 0) cout << endl; Release(root); } } system("pause"); return 0; }