以下是一個用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
函數中,我們創建了一個整型的二叉樹并進行了一些插入操作和中序遍歷操作。您可以根據需要修改代碼以適應不同的數據類型和操作。