关于二叉数的实现和关于二叉树的前序遍历,中序遍历和后序遍历的实现
#include<iostream>
using namespace std;
struct BiTNode {
int data;
BiTNode *lchilde, *rchilde;
};
//前序遍历
void preorderTraverse(BiTNode *T) {
if (T == nullptr) {
return;
}
cout << T->data << endl;
preorderTraverse(T->lchilde);
preorderTraverse(T->rchilde);
}
//中序遍历
void inorderTraverse(BiTNode *T) {
if (T == nullptr) {
return;
}
inorderTraverse(T->lchilde);
cout << T->data;
inorderTraverse(T->rchilde);
}
//后序遍历
void postorderTraverse(BiTNode *T) {
if (T == nullptr) {
return;
}
postorderTraverse(T->lchilde);
postorderTraverse(T->rchilde);
cout << T->data;
}
void createTree(BiTNode **T) {
int ch;
cin >> ch;
if (ch == 0) {
*T = nullptr;
return;
}
else {
*T = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->data = ch;
createTree(&(*T)->lchilde);
createTree(&((*T)->rchilde));
}
}
int main() {
BiTNode *T;
createTree(&T);//创建一个树
cout << "前序遍历" << endl;
preorderTraverse(T);//
cout << "中序遍历" << endl;
inorderTraverse(T);
cout << endl;
cout << "后序遍历" << endl;
postorderTraverse(T);
cout << endl;
system("pause");
}
代码仅供参考!