Files
lanqiao/00lanqiao chap/test99-5-1.cpp

66 lines
1.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 树形结构的前中后序遍历以及bfs层级遍历
#include<bits/stdc++.h>
using namespace std;
const int N = 20;
int ls[N], rs[N];
// 先序遍历
void dfs1(int x){
cout << x << ' ';
if(ls[x]) dfs1(ls[x]);
if(rs[x]) dfs1(rs[x]);
}
// 中序遍历
void dfs2(int x){
if(ls[x]) dfs2(ls[x]);
cout << x << ' ';
if(rs[x]) dfs2(rs[x]);
}
// 后序遍历
void dfs3(int x){
if(ls[x]) dfs3(ls[x]);
if(rs[x]) dfs3(rs[x]);
cout << x << ' ';
}
// 层序遍历
void bfs(){
queue<int> q;
q.push(1);
while(q.size()){
int x = q.front(); q.pop();
cout << x << ' ';
if(ls[x]) q.push(ls[x]);
if(rs[x]) q.push(rs[x]);
}
}
int main(){
int n; cin >> n;
for(int i = 1; i <= n; i++) cin >> ls[i] >> rs[i];
dfs1(1); cout << endl;
dfs2(1); cout << endl;
dfs3(1); cout << endl;
bfs(); cout << endl;
return 0;
}
/* test samples
10
2 3
4 5
6 7
8 0
0 9
0 0
10 0
0 0
0 0
0 0
out:
1 2 4 8 5 9 3 6 7 10
8 4 2 5 9 1 6 3 10 7
8 4 9 5 2 6 10 7 3 1
1 2 3 4 5 6 7 8 9 10
*/