再帰関数には、ツリー データ構造を処理するときに次の用途があります。 基本概念: 再帰関数は、それ自体を呼び出して、大きな問題を小さな問題に分解します。ツリー構造の走査: 事前順序走査: ノードにアクセスする前に子ノードにアクセスします。事後トラバーサル: ノードにアクセスした後、子ノードにアクセスします。実用的なケース: バイナリ ツリーのトラバーサルを事前順序付けし、バイナリ ツリー内のノード値を出力します。
struct Node { int data; Node* left; Node* right; }; void preorderTraversal(Node* root) { if (root == nullptr) { return; } // 访问当前节点 cout << root->data << " "; // 递归遍历左子树 preorderTraversal(root->left); // 递归遍历右子树 preorderTraversal(root->right); } int main() { // 创建二叉树结构: // 1 // / \ // 2 3 // / \ //4 5 Node root = {1, nullptr, nullptr}; Node left1 = {2, nullptr, nullptr}; Node right1 = {3, nullptr, nullptr}; Node left2 = {4, nullptr, nullptr}; Node right2 = {5, nullptr, nullptr}; root.left = &left1; root.right = &right1; left1.left = &left2; left1.right = &right2; // 前序遍历二叉树 preorderTraversal(&root); return 0; }出力:
1 2 4 5 3
以上がC++ 再帰関数をツリー データ構造に適用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。