下面是一个C++中满二叉树的简单实现示例:
#include <iostream>
#include <cmath>
// 二叉树节点
template<typename T>
struct TreeNode {
T data;
TreeNode<T>* left;
TreeNode<T>* right;
TreeNode(T val) : data(val), left(nullptr), right(nullptr) {}
};
// 满二叉树
template<typename T>
class FullBinaryTree {
private:
TreeNode<T>* root;
// 创建满二叉树
TreeNode<T>* createFullBinaryTree(int depth, int currDepth) {
if (currDepth > depth) {
return nullptr;
}
TreeNode<T>* node = new TreeNode<T>(currDepth);
node->left = createFullBinaryTree(depth, currDepth + 1);
node->right = createFullBinaryTree(depth, currDepth + 1);
return node;
}
public:
FullBinaryTree(int depth) {
root = createFullBinaryTree(depth, 1);
}
~FullBinaryTree() {
clear(root);
}
void clear(TreeNode<T>* node) {
if (!node) {
return;
}
clear(node->left);
clear(node->right);
delete node;
}
void display() {
displayHelper(root, 0);
}
void displayHelper(TreeNode<T>* node, int level) {
if (!node) {
return;
}
displayHelper(node->right, level + 1);
for (int i = 0; i < level; ++i) {
std::cout << " ";
}
std::cout << node->data << std::endl;
displayHelper(node->left, level + 1);
}
};
int main() {
FullBinaryTree<int> fullTree(3);
fullTree.display();
return 0;
}
这个程序创建了一个深度为3的满二叉树,并打印了树的结构。