#include <iostream>
#include <deque>
using namespace std;
struct BSTNode
{
int value;
BSTNode* left;
BSTNode* right;
BSTNode()
{
value = 0;
left = NULL;
right = NULL;
}
};
deque<BSTNode*> sq;
void insert(BSTNode* &p, int elem)
{
if(p == NULL)
{
BSTNode* pnew = new BSTNode();
pnew->left = 0;
pnew->right =0;
pnew->value = elem;
p = pnew;
return;
}
if(elem > p->value)
{
insert(p->right, elem);
}
else if(elem < p->value)
{
insert(p->left, elem);
}
else
cout << "The Same!" << endl;
}
void BFS(BSTNode* root)
{
BSTNode* p = root;
sq.push_back(p);
deque<BSTNode*>::iterator i = sq.begin();
while(p != NULL)
{ i++;
sq.push_back(p->left);
sq.push_back(p->right);
p = *(i);
}
}
void print_deque(deque<BSTNode*> que)
{
deque<BSTNode*>::iterator iter = que.begin();
for(; iter != que.end(); ++iter)
{
cout << (*iter)->value << endl;
}
}
int main(void)
{
BSTNode* root = 0;
insert(root, 8);
insert(root, 6);
insert(root, 10);
insert(root, 5);
insert(root, 7);
insert(root, 9);
insert(root, 11);
BFS(root);
print_deque(sq);
return 0;
}
樹(此處以二叉搜索樹爲例)的按層遍歷 更改版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.