#include <iostream>
#include <queue>
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 cengci_show(Node* root)
{
queue<Node*> q;
q.push(root);
while (!q.empty())
{
Node* tmp = q.front();
q.pop();
cout << tmp->data << " ";
if (tmp->left != NULL)
{
q.push(tmp->left);
}
if (tmp->right != NULL)
{
q.push(tmp->right);
}
}
}
int main()
{
Node* root = insert();
cengci_show(root);
return 0;
}
