twalk() - 二分木走査

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE
#include <search.h>

void *twalk(const void *root, void (*action)(const void *, VISIT, int));

機能説明

twalk() 関数は、バイナリー・サーチ・ツリーを全探索します。root 引数は、全探索されるツリーのルート・ノードを指すポインターです。(ツリーのノードは、そのノードの下の走査のルートとして使用されることがあります。) 引数 action は、各ノードで 呼び出されるルーチンの名前です。このルーチンは、交互に 3 つの 引数を使用して呼び出されます。最初の引数は、視察されている ノードのアドレスです。この引数が指している構造体は未指定で、アプリケーションで変更してはなりませんが、ノードに保管されて いるエレメントをアクセスするために、ポインターとノード間の関係を ポインターとポインターとエレメント間の関係に変換できるよう 保証されます。2 番目の引数は、次の列挙データ型の値です。
typedef enum {preorder, postorder, endorder, leaf } VISIT;
上記は (<search.h> ヘッダーに定義されているとおり)、ノードが視察されたのは (ツリーの深さ優先で、左から右への巡回時に)、1 回目であるか、2 回目であるか、3 回目であるか、あるいはそのノードが葉であるかによって決まります。3 番目の引数は、ルートがレベル・ゼロのツリー内のノードの レベルです。

スレッド化の動作: tsearch() - 二分木探索を参照してください。

C++ の特殊な動作: C と C++ のリンケージ規約は非互換性のため、twalk() は C++ 関数ポインターを引数として受け取ることができません。C++ 関数ポインターを twalk() へ渡そうとすると、コンパイラーが これにエラーのフラグを付けます。C 関数または C++ 関数を外部「C」として宣言することにより、twalk() にその関数を渡すことができます。

戻り値

twalk() は、値を戻しません。

エラーは定義されません。

関連情報