跟普通的树用dfs和bfs遍历树相比,二叉树有额外的遍历方式:
先序遍历
int lch[MAX_N], rch[MAX_N];
void preorder(int u) {
cout << "visiting " << u << endl;
if (lch[u]) {
preorder(lch[u]);
}
if (rch[u]) {
preorder(rch[u]);
}
}
中序遍历
int lch[MAX_N], rch[MAX_N];
void preorder(int u) {
if (lch[u]) {
preorder(lch[u]);
}
cout << "visiting " << u << endl;
if (rch[u]) {
preorder(rch[u]);
}
}
后序遍历
int lch[MAX_N], rch[MAX_N];
void preorder(int u) {
if (lch[u]) {
preorder(lch[u]);
}
if (rch[u]) {
preorder(rch[u]);
}
cout << "visiting " << u << endl;
}