/ * タイトル: 上層から下方支店バイナリ印刷機。 * / / * :アイデア スタックが空になるまで、左と右の子ノード、ループに押されて、キューの使用、プレスへのキューノード、およびポップアップし、。 二つのカウンタ、現在の行のノードの現在のレコード番号、次の行にあるノードの次のレコード番号を追加します。 * / の#include <iostreamの> する#include <string.hの> する#include <アルゴリズム> の#include <cmath> する#include <stdio.hに> する#include <ベクトル> の#include <スタック> の#include <キュー> 名前空間STDを使用して、 ツリーノード{構造体 ヴァルINT、 左ツリーノード*をストラクト、 右*ツリーノードをストラクト、 ツリーノード(INT X): (NULL)左ヴァル(X)、右(NULL){ } }。 両端キュー<TreeNodeの*> MYQUEUE。 myQueue.push_back(ルート)。 ツリーノード* TEMP。 int型カレント= 1; int型の次= 0; (!myQueue.empty()){ながら TEMP = myQueue.front()。 myQueue.pop_front(); coutの<< temp->ヴァル<<」「; 現在 - ; IF(temp->左= nullptr!){ myQueue.push_backは(temp->左)。 ++次; } (temp->右= nullptr!){もし myQueue.push_back(temp->右)。 ++次; } (現在の== 0){もし COUT << ENDL。 現在=次回。 } int型のmain(){ ツリーノード*ノード1 =新しいツリーノード(1)。 ツリーノード*ノード2 =新しいのTreeNode(2); ツリーノード*ノード3 =新しいのTreeNode(3); ツリーノード*ノード4 =新しいのTreeNode(4); ツリーノード* NODE5 =新しいツリーノード(5); ツリーノード* node6 =新しいツリーノード(6); node1->左=ノード2。 node1->右=ノード3。 node2->左=ノード4。 node3->左= NODE5。 node3->右= node6。 PrintFromTopToBottom(ノード1)。 }