#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++实现二叉树递归遍历
最新推荐文章于 2023-09-17 10:54:25 发布