(一)利用前序遍历构建二叉树
(二)利用递归,分别按照前序、中序、后序遍历二叉树
创建的二叉树如下:
运行程序后,在控制台窗口输入:
ABDH##I##E##CF#J##G##
来构建上图的二叉树
详细代码如下:
#include <iostream>
using namespace std;
typedef char datatype;
//二叉树的左右链表示,也叫做二叉链表表示
typedef struct node {
datatype data;
struct node* lchild;
struct node* rchild;
}Node;
typedef Node* Btree;
Btree preCreateBT() {
Btree T;
char ch;
cin >> ch;
if (ch == '#') {
T = NULL;
}
else {
T = new node;
T->data = ch;
T->lchild = preCreateBT();
T->rchild = preCreateBT();
}
return T;
}
//先序遍历
/*
void PreOrder(Btree BT) {
if (BT != NULL) {
cout << BT->data<<endl;
PreOrder(BT->lchild);
PreOrder(BT->rchild);
}
}
*/
//中序遍历
/*
void InOrder(Btree BT) {
if (BT != NULL) {
InOrder(BT->lchild);
cout << BT->data << endl;
InOrder(BT->rchild);
}
}
*/
//后序遍历
/*
void PostOrder(Btree BT) {
if (BT != NULL) {
PostOrder(BT->lchild);
PostOrder(BT->rchild);
cout << BT->data << endl;
}
}
*/
int main() {
//前序遍历创建树
Btree TreeOne = preCreateBT();
//先序遍历(递归)
//PreOrder(TreeOne);
//中序遍历(递归)
//InOrder(TreeOne);
//后序遍历(递归)
//PostOrder(TreeOne);
}