溫馨提示×

如何用C++遞歸算法實(shí)現(xiàn)樹的遍歷

c++
小樊
82
2024-09-27 10:35:12
欄目: 編程語言

在C++中,使用遞歸算法實(shí)現(xiàn)樹的遍歷有三種主要方法:前序遍歷(Pre-order Traversal)、中序遍歷(In-order Traversal)和后序遍歷(Post-order Traversal)。這里給出一個(gè)簡單的二叉樹結(jié)構(gòu)以及相應(yīng)的遞歸遍歷實(shí)現(xiàn)。

首先,定義一個(gè)二叉樹節(jié)點(diǎn)結(jié)構(gòu)體:

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

接下來,實(shí)現(xiàn)遞歸遍歷:

  1. 前序遍歷(Pre-order Traversal):根節(jié)點(diǎn) -> 左子樹 -> 右子樹
void preOrderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    cout << root->val << " ";
    preOrderTraversal(root->left);
    preOrderTraversal(root->right);
}
  1. 中序遍歷(In-order Traversal):左子樹 -> 根節(jié)點(diǎn) -> 右子樹
void inOrderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    inOrderTraversal(root->left);
    cout << root->val << " ";
    inOrderTraversal(root->right);
}
  1. 后序遍歷(Post-order Traversal):左子樹 -> 右子樹 -> 根節(jié)點(diǎn)
void postOrderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    postOrderTraversal(root->left);
    postOrderTraversal(root->right);
    cout << root->val << " ";
}

以上代碼中,我們使用了遞歸的方式實(shí)現(xiàn)了二叉樹的前序、中序和后序遍歷。在主函數(shù)中,可以創(chuàng)建一個(gè)二叉樹并調(diào)用相應(yīng)的遍歷函數(shù)進(jìn)行測試。

0