2019年11月19日
順トラバーサルで非再帰的バイナリツリー
空順序どおり(BiTree T){
場合(T!= NULL){
順序どおり(T - > lchild); // 再帰トラバーサル左サブツリー
訪問(T); // ルートへのアクセス
順序どおり(T-> rchild); // 再帰トラバーサル左サブツリー
}
}
順トラバーサルで非再帰的バイナリツリー
1 空隙InOrder2(BitTree T){ 2 // トラバースのバイナリ非再帰的アルゴリズム、スタックアルゴリズムによって必要 3。 InitStack(S); // 初期化スタック 4。 BitTree P = T; // Pは、ポインタを移動される 5。 一方、( || P!のisEmpty(S)){ 6 IF(P){ // スタックにルートポインタ、トラバース左サブツリー。 7 プッシュ(S、P); // 左に移動するには、空でないバイナリツリーに直面したとき。 8 P = P-> lchild; 9 } 10 他 { // ルートポインタスタック解除、アクセスルート、右サブツリーを横切ります。 11 POP(S、P)であり; // デ積み重ね。 12 訪問(P-)から; //は、ルートノードにアクセスします。 13は、 P = P-> rchild; //は右サブツリー行く 14 } 15 } 16 }