#include <iostream>
using namespace std;
struct Node {
int data;
Node* right;
Node* left;
};
//二叉树的创建
Node* insert() {
cout << "输入要插入的数字,以0结束:" << endl;
int data;
cin >> data;
Node* root;
root = (Node*)malloc(sizeof(Node));
root->right = NULL;
root->left = NULL;
root->data = NULL;
if (data == 0)
return root;
else
root->data = data;
cin >> data;
while (data != 0) {
Node* p = root;
//p->data = data;
Node* q = p;
while (p != NULL) {
if (data > p->data) {
q = p;
p = q->right;
}
else if(data < p->data)
{
q = p;
p = q->left;
}
else if (data == p->data)
{
break;
}
}
Node* tmp;
tmp = (Node*)malloc(sizeof(Node));
tmp->data = data;
tmp->left = NULL;
tmp->right = NULL;
if (data > q->data) {
q->right = tmp;
}
else if (data < q->data)
{
q->left = tmp;
}
//else if (data == q->data)
//{
// cin >> data;
// continue;
//}
cin >> data;
}
return root;
}
//二叉树的前序遍历
void PreOrderTree(Node* root) {
Node* p = root;
if (p != NULL)
{
cout << p->data << endl;
PreOrderTree(p->left);
PreOrderTree(p->right);
}
}
//二叉树的中序遍历
void InOrderTree(Node* root) {
Node* p = root;
if (p != NULL)
{
InOrderTree(p->left);
cout << p->data << endl;
InOrderTree(p->right);
}
}
//二叉树的后序遍历
void PostOrderTree(Node* root) {
Node* p = root;
if (p != NULL)
{
PostOrderTree(p->left);
PostOrderTree(p->right);
cout << p->data << endl;
}
}
int main()
{
cout << "=======创建一个二叉树========" << endl;
Node* root = insert();
cout << "=======二叉树的前序遍历========" << endl;
PreOrderTree(root);
cout << "=======二叉树的中序遍历========" << endl;
InOrderTree(root);
cout << "=======二叉树的后序遍历========" << endl;
PostOrderTree(root);
return 0;
}
7
5 9
6 4 8 10