c++創(chuàng)建二叉樹(shù)的方法是什么

c++
小億
94
2024-03-15 16:47:58

在C++中,可以通過(guò)定義一個(gè)二叉樹(shù)節(jié)點(diǎn)結(jié)構(gòu)體來(lái)創(chuàng)建二叉樹(shù)。每個(gè)節(jié)點(diǎn)結(jié)構(gòu)體包含一個(gè)值和指向左右子節(jié)點(diǎn)的指針。然后可以使用遞歸的方式來(lái)構(gòu)建二叉樹(shù)。以下是一個(gè)簡(jiǎn)單的示例代碼:

#include <iostream>

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

TreeNode* createBinaryTree() {
    int val;
    std::cin >> val;
    if (val == -1) { // -1表示空節(jié)點(diǎn)
        return nullptr;
    }
    
    TreeNode* root = new TreeNode(val);
    std::cout << "Enter left child of " << val << ": ";
    root->left = createBinaryTree();
    std::cout << "Enter right child of " << val << ": ";
    root->right = createBinaryTree();
    
    return root;
}

void inorderTraversal(TreeNode* root) {
    if (root == nullptr) {
        return;
    }
    
    inorderTraversal(root->left);
    std::cout << root->val << " ";
    inorderTraversal(root->right);
}

int main() {
    TreeNode* root = createBinaryTree();
    
    std::cout << "Inorder traversal of the binary tree: ";
    inorderTraversal(root);
    
    return 0;
}

在上面的示例代碼中,首先定義了一個(gè)TreeNode結(jié)構(gòu)體表示二叉樹(shù)節(jié)點(diǎn),然后使用createBinaryTree函數(shù)遞歸地構(gòu)建二叉樹(shù)。用戶輸入樹(shù)節(jié)點(diǎn)的值,-1表示空節(jié)點(diǎn)。最后,使用inorderTraversal函數(shù)進(jìn)行中序遍歷打印出二叉樹(shù)的值。

0