#include <iostream>
#include <string>
using namespace std;
// 樹結構
struct Tree {
public:
string _data;
Tree *lchild;
Tree *rchild;
};
// 遞歸創建二叉樹
void recursion_create_tree(Tree *tree) {
string data;
cin >> data;
if (data == "a") {
return;
}
Tree* _tree = new Tree;
_tree -> _data = data;
tree = _tree;
recursion_create_tree(tree -> lchild);
recursion_create_tree(tree -> rchild);
}
// 前序遍歷:根節點->左子樹->右子樹
void pre_traverse(Tree *tree) {
if (tree) {
cout << tree -> _data << endl;;
if (tree -> lchild) {
pre_traverse(tree -> lchild);
}
if (tree -> rchild) {
pre_traverse(tree -> rchild);
}
}
}
// 中序遍歷:左子樹->根節點->右子樹
void in_traverse(Tree *tree) {
if (tree) {
if (tree -> lchild) {
in_traverse(tree -> lchild);
}
cout << tree -> _data << endl;
if (tree -> rchild) {
in_traverse(tree -> rchild);
}
}
}
// 後序遍歷:左子樹->右子樹->根節點
void beh_traverse(Tree *tree) {
if (tree) {
if (tree -> lchild) {
beh_traverse(tree -> lchild);
}
if (tree -> rchild) {
beh_traverse(tree -> rchild);
}
cout << tree -> _data << endl;
}
}
int main(int argc, char** args) {
Tree* tree;
recursion_create_tree(tree);
pre_traverse(tree);
in_traverse(tree);
beh_traverse(tree);
return 0;
}
C++實現二叉樹遞歸遍歷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.