题目:树的遍历!按先序遍历创建一棵树,分别以先序、中序、后序遍历输出
样例输入
A B # D # # C E # # F # #
样例输出
PreOrder: A B D C E F
InOrder: B D A E C F
PostOrder: D B E F C A
代码:
//按先序遍历创建一棵树,分别以先序、中序、后序遍历输出
#include <iostream>
using namespace std;
struct node{
char ch;
node *left, *right;
};
node* creat() {
node *root = new node;
char c;
cin >> c;
if(c == '#') root = NULL;
else {
root->ch = c;
root->left = creat();
root->right = creat();
}
return root;
}
void preOrder(node *root) {
if(root == NULL) return; //这条语句不能忘!!!
cout << " " << root->ch;
preOrder(root->left);
preOrder(root->right);
}
void inOrder(node *root) {
if(root == NULL) return;
inOrder(root->left);
cout << " " << root->ch;
inOrder(root->right);
}
void postOrder(node *root) {
if(root == NULL) return;
postOrder(root->left);
postOrder(root->right);
cout << " " << root->ch;
}
int main() {
node *root = creat();
cout << "preOrder:";
preOrder(root);
cout << endl;
cout << "inOrder:";
inOrder(root);
cout << endl;
cout << "postOrder:";
postOrder(root);
cout << endl;
return 0;
}