二叉木アルゴリズムを階層的に巡回
690 ワード
問題:階層別に二叉の木を遍歴する
インターネットでいくつかの段階で二叉木を巡るアルゴリズムを見ましたが、ここでは行列を通して二叉木を巡るアルゴリズムを修正しました.
---------------------------------
ネットで言っているのは列を通して実現されるという解釈です.
列を作って、列が空いていない限り、最初の元素の左右の子供を列に入れます.(子供が左右にいないなら)、列の最初の要素を正しい方向に出してください.
流れは以下の通りです
注:画像ソースネットワーク
役不足を避けるために、一方向の列を使うのは簡単で、さっぱりしています.
インターネットでいくつかの段階で二叉木を巡るアルゴリズムを見ましたが、ここでは行列を通して二叉木を巡るアルゴリズムを修正しました.
---------------------------------
ネットで言っているのは列を通して実現されるという解釈です.
列を作って、列が空いていない限り、最初の元素の左右の子供を列に入れます.(子供が左右にいないなら)、列の最初の要素を正しい方向に出してください.
流れは以下の通りです
注:画像ソースネットワーク
役不足を避けるために、一方向の列を使うのは簡単で、さっぱりしています.
#include
#include
using namespace std;
void PrintAtLevel(Tree T) {
queue myqueue;
myqueue.push(T);
while (!myqueue.empty()) {
Tree tmp = myqueue.front();
if (tmp->lchild != NULL)
myqueue.push(tmp->lchild);
if (tmp->rchild != NULL)
myqueue.push(tmp->rchild);
cout << tmp->value << " ";
myqueue.pop();
}
}