SDUTOJ3344資料結構實驗之二叉樹五:層序遍歷
阿新 • • 發佈:2018-12-13
資料結構實驗之二叉樹五:層序遍歷
https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2711/pid/3344
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
已知一個按先序輸入的字元序列,如abd,,eg,,,cf,,,(其中,表示空結點)。請建立二叉樹並求二叉樹的層次遍歷序列。
Input
輸入資料有多行,第一行是一個整數t (t<1000),代表有t行測試資料。每行是一個長度小於50個字元的字串。
Output
輸出二叉樹的層次遍歷序列。
Sample Input
2
abd,,eg,,,cf,,,
xnl,,i,,u,,
Sample Output
abcdefg
xnuli
Hint
Source
xam
#include <bits/stdc++.h> using namespace std; struct tree { char c; tree *l, *r; }; int cnt; char s[100]; tree *creat(tree *root) // 構建二叉樹 { if (s[cnt] == ',') { cnt++; return NULL; } root = new tree; root->c = s[cnt++]; root->l = creat(root->l); root->r = creat(root->r); return root; } void show(tree *root) // 層序遍歷二叉樹 // 通過佇列實現 { queue<tree *> q; if (root) q.push(root); while (!q.empty()) { root = q.front(); q.pop(); if (root) { cout << root->c; q.push(root->l); q.push(root->r); } } } int main() { int n; // char s[100]; cin >> n; while (n--) { tree *tree; cin >> s; cnt = 0; tree = creat(tree); show(tree); cout << endl; } return 0; }