バイナリツリートラバーサル - フェイス質問オファー安全性を証明するために32軒の支店を逆さまにバイナリを印刷しています

/ * 
タイトル:
	上層から下方支店バイナリ印刷機。
* / 
/ * 
:アイデア
	スタックが空になるまで、左と右の子ノード、ループに押されて、キューの使用、プレスへのキューノード、およびポップアップし、。
	二つのカウンタ、現在の行のノードの現在のレコード番号、次の行にあるノードの次のレコード番号を追加します。
* / 
の#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)。

}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/11938720.html