#include <iostream>
#include <deque>
using
namespace
std;
struct
BTree
{
BTree* pLeft;
BTree* pRight;
int
value;
};
void
InsertBTree(BTree* &pRoot,
int
n)
{
if
(!pRoot)
{
pRoot=
new
BTree;
pRoot->pLeft=NULL;
pRoot->pRight=NULL;
pRoot->value=n;
}
else
{
if
(n>pRoot->value)
{
InsertBTree(pRoot->pRight,n);
}
if
(n<pRoot->value)
{
InsertBTree(pRoot->pLeft,n);
}
if
(n==pRoot->value)
{
cout<<
"repeated insertion"
<<endl;
}
}
}
void
VisitByLevel(BTree* pRoot)
{
if
(!pRoot)
{
return
;
}
deque<BTree*> BTDeque;
BTDeque.push_back(pRoot);
while
(BTDeque.size())
{
BTree* p=BTDeque.front();
cout<<p->value<<
"\t"
;
BTDeque.pop_front();
if
(p->pLeft)
{
BTDeque.push_back(p->pLeft);
}
if
(p->pRight)
{
BTDeque.push_back(p->pRight);
}
}
}
int
main()
{
BTree* pRoot=NULL;
InsertBTree(pRoot,8);
InsertBTree(pRoot,6);
InsertBTree(pRoot,10);
InsertBTree(pRoot,5);
InsertBTree(pRoot,7);
InsertBTree(pRoot,9);
InsertBTree(pRoot,11);
VisitByLevel(pRoot);
return
0;
}