データ構造アルゴリズム設計の大きな問題(バイナリ)

まず、バイナリツリーの先行順走査は、非再帰的なアルゴリズムを記述するために

           バイナリリンクリストのノードタイプは次のとおりです。

構造体BNODE 
{ 
    チャーデータ、
     構造体 BNODE lchild *、* rchild; 
}; 
typedefは構造体 BNODE BNODE * Bツリー;
 // *ポインタ型識別子はBツリーであります

       先行順走査は、非再帰的なアルゴリズム:

ボイドプレオーダー(BツリーT)
{ 
    BNODE * S [M]; // 設定スタック容量M 
    BNODE P = T *; INTトップ= - 1 ; // スタックが空である

    一方!((トップ= - 。1)|| (P =!)NULL)
         IF(P = NULL)!// ルートが空でない場合、Pは、ルートから開始し、印刷ルート
        { 
            のprintf(" %のD "、T-> データ);
             IF(P ! - > rchild = NULL)// もし空でない右部分木 
                S [トップ++] = P - > rchild; // 右のサブツリースタック、スタックポインタプラス 
            P = P - > lchildを; //右サブツリーを割り当てることが空である場合、ルートノードの左の部分木は、ルートノードが決定されるか空でない、空の、印刷ルートノード(すなわち、左サブツリー)
        }
          IF(トップ=! - 。1) S = P [top--]; // スタックが空でない場合、スタックは、スタックポインタはデクリメントされ、スタックの最上位スタックにルート・ノード、プリント右サブツリーwhileループ 
}

第二に、つづきます

おすすめ

転載: www.cnblogs.com/javabai/p/10993109.html