まず、バイナリツリーの先行順走査は、非再帰的なアルゴリズムを記述するために
バイナリリンクリストのノードタイプは次のとおりです。
構造体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ループ }
第二に、つづきます