以下のコードの通り掛け順の関数のうち、f(tree->value);で何をしているのかがいまいちわかりません。
抽象的に関数ポインタ??という理解度です...
よろしくお願いいたします。
ヘッダファイル
/* binary_tree.h */ typedef void* T; typedef struct Node { T value; struct Node* left; struct Node* right; struct Node* parent; } Node; Node* tree_construct(T value, Node* left, Node* right); void tree_free(Node* tree); int tree_depth(Node* node); int tree_height(Node* node); typedef void (*Visitfn)(T value); void tree_preorder(Node* tree, Visitfn f); void tree_inorder(Node* tree, Visitfn f); void tree_postorder(Node* tree, Visitfn f);
2分木生成
Node* tree_construct(T value, Node* left, Node* right) { Node* node = (Node*)malloc(sizeof(Node)); node->value = value; node->parent = NULL; node->left = left; if(left != NULL) { left->parent = node; } node->right = right; if(right != NULL) { right->parent = node; } return node; }
通り掛け順探索
void tree_preorder(Node* tree, Visitfn f) { f(tree->value); if(tree->left != NULL) { tree_preorder(tree->left, f); } if(tree->right != NULL) { tree_preorder(tree->right, f); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。