私はちょうど経験豊富なコーダーではなく、いくつかのコードを試していました。レベルオーダートラバーサルを実装しました(少なくとも考えてみてください)、それはかなり簡単に完了しました。それが正しいアプローチかどうかを知りたい。バイナリツリーのキューBFS
#include<iostream>
#include<queue>
using namespace std;
class node {
public :
node *right;
node *left;
int info;
}*root;
queue<int> inf;
void bfs(node *t)
{
if(t!=NULL)
{
if(t->right!=NULL)
inf.push(t->right->info);
if(t->left!=NULL)
inf.push(t->left->info);
bfs(t->right);
bfs(t->left);
}
}
int main()
{
node *temp = new node();
temp->info = 1;
root = temp;
root->right = new node();
root->right->info = 2;
root->right->right = root->right->left = NULL;
root->left = new node();
root->left->info = 3;
root->left->right = root->left->left = NULL;
node *tmp = root;
root=root->right;
root->right = new node();
root->right->info = 4;
root->right->right = root->right->left = NULL;
root->left = new node();
root->left->info = 5;
root->left->right = root->left->left = NULL;
root = tmp;
root = root->left;
root->right = new node();
root->right->info = 6;
root->right->right = root->right->left = NULL;
root->left = new node();
root->left->info = 7;
root->left->right = root->left->left = NULL;
root = temp;
node *it;
it = root;
inf.push(root->info);
bfs(root);
for(;inf.size()!=0;)
{
cout<<inf.front()<<" : ";
inf.pop();
}
return 0;
}
私は、レベル0 [ルート]からレベルn [葉]まで、レベルに基づいてツリーの値を印刷しようとしていました。しかし、ええ、私はあなたが言うことを得る!ありがとう。 –
@AadiDroid:はい、これはBFSがあなたのツリーを歩く方法です。各レベルごとに。しかし、あなたはDFSを使用しています。これは最初に深みに行きます。使用しているキューは、異なる順序ではなく、後でノードを印刷します。 – LiKao