以下是一個(gè)用C++模板實(shí)現(xiàn)的二叉樹的例子:
#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;
}
在這個(gè)例子中,我們定義了一個(gè)Node
結(jié)構(gòu)來表示二叉樹的節(jié)點(diǎn),然后定義了一個(gè)BinaryTree
類來表示二叉樹。BinaryTree
類包含了插入節(jié)點(diǎn)和中序遍歷二叉樹的方法。在main
函數(shù)中,我們創(chuàng)建了一個(gè)整型的二叉樹并進(jìn)行了一些插入操作和中序遍歷操作。您可以根據(jù)需要修改代碼以適應(yīng)不同的數(shù)據(jù)類型和操作。