中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++二叉樹模板怎么實現

c++
小億
84
2024-03-15 16:37:03
欄目: 編程語言

以下是一個用C++模板實現的二叉樹的例子:

#include <iostream>

template <typename T>
struct Node {
    T data;
    Node<T>* left;
    Node<T>* right;

    Node(T val) : data(val), left(nullptr), right(nullptr) {}
};

template <typename T>
class BinaryTree {
private:
    Node<T>* root;

public:
    BinaryTree() : root(nullptr) {}

    void insert(T val) {
        root = insertNode(root, val);
    }

    void inorderTraversal() {
        inorderTraversal(root);
    }

private:
    Node<T>* insertNode(Node<T>* root, T val) {
        if (root == nullptr) {
            return new Node<T>(val);
        }

        if (val < root->data) {
            root->left = insertNode(root->left, val);
        } else {
            root->right = insertNode(root->right, val);
        }

        return root;
    }

    void inorderTraversal(Node<T>* root) {
        if (root != nullptr) {
            inorderTraversal(root->left);
            std::cout << root->data << " ";
            inorderTraversal(root->right);
        }
    }
};

int main() {
    BinaryTree<int> tree;
    tree.insert(5);
    tree.insert(3);
    tree.insert(8);
    tree.insert(1);
    tree.insert(4);

    std::cout << "Inorder traversal of the binary tree is: ";
    tree.inorderTraversal();

    return 0;
}

在這個例子中,我們定義了一個Node結構來表示二叉樹的節點,然后定義了一個BinaryTree類來表示二叉樹。BinaryTree類包含了插入節點和中序遍歷二叉樹的方法。在main函數中,我們創建了一個整型的二叉樹并進行了一些插入操作和中序遍歷操作。您可以根據需要修改代碼以適應不同的數據類型和操作。

0
天镇县| 堆龙德庆县| 石台县| 曲麻莱县| 昆山市| 临西县| 文安县| 普兰县| 沙坪坝区| 河南省| 博乐市| 鄂州市| 内丘县| 沐川县| 香河县| 临清市| 精河县| 锡林郭勒盟| 呼图壁县| 建宁县| 石城县| 仁布县| 吴桥县| 晋中市| 林甸县| 青浦区| 磐石市| 麦盖提县| 民乐县| 商洛市| 西平县| 南汇区| 沿河| 宁明县| 榆社县| 宜宾市| 通辽市| 富平县| 青浦区| 大邑县| 东城区|