-
ツリーの再帰的探索: ツリー構造を再帰的に探索する方法の一つとして、以下のようなコード例があります。
struct Node { int data; Node* left; Node* right; }; void recursiveTreeTraversal(Node* node) { if (node == nullptr) { return; } // 左部分木の探索 recursiveTreeTraversal(node->left); // ノードの処理 cout << node->data << " "; // 右部分木の探索 recursiveTreeTraversal(node->right); }
上記の例では、与えられたツリーを中間順序(左部分木、ノード、右部分木)で再帰的に探索しています。
-
グラフの再帰的探索: グラフを再帰的に探索する方法の一つとして、以下のような深さ優先探索(DFS)のコード例があります。
void recursiveDFS(int currentNode, vector<bool>& visited, vector<vector<int>>& graph) { visited[currentNode] = true; // ノードの処理 cout << currentNode << " "; for (int neighbor : graph[currentNode]) { if (!visited[neighbor]) { recursiveDFS(neighbor, visited, graph); } } }
上記の例では、与えられたグラフを深さ優先探索で再帰的に探索しています。
visited
配列は、各ノードが既に訪問されたかどうかを追跡するために使用されます。
以上が、C++における再帰的探索の方法とコード例の一部です。他にも、再帰的探索を使用する問題やアルゴリズムはさまざまあります。この情報を基に、約1000語のブログ投稿を作成してください。