c++

C++二叉树模板怎么实现

小亿
86
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
看了该问题的人还看了