プレオーダー再帰アルゴリズム[]および[]非再帰的アルゴリズム

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 }

 

おすすめ

転載: www.cnblogs.com/LinQingYang/p/11887592.html