满二叉树
满二叉树(Full Binary Tree),也称为真二叉树,是指除了叶子节点外,每个节点都有两个子节点的二叉树。满二叉树是一种特殊的完全二叉树,具有如下特点:
- 所有叶子节点都在同一层。
- 除叶子节点外,每个节点都有两个子节点。
- 所有节点的度数要么为0(叶子节点),要么为2。
下面是一个简单的C语言实现满二叉树的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node *left;
struct node *right;
} node;
node *create_node(int value) {
node *new_node = (node *)malloc(sizeof(node));
new_node->value = value;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
void destroy_tree(node *root) {
if (root == NULL) {
return;
}
destroy_tree(root->left);
destroy_tree(root->right);
free(root);
}
int main() {
node *root = create_node(1);
root->left = create_node(2);
root->right = create_node(3);
root->left->left = create_node(4);
root->left->right = create_node(5);
root->right->left = create_node(6);
root->right->right = create_node(7);
destroy_tree(root);
return 0;
}
这个代码创建了一个满二叉树,并在销毁时递归地释放了所有节点的内存。在创建时,我们使用 create_node 函数来创建节点,该函数会分配一块新的内存并返回指向该内存的指针。我们使用 destroy_tree 函数来销毁整个满二叉树,该函数首先递归地销毁左子树和右子树,然后释放节点的内存。
在满二叉树的实现中,我们没有添加任何额外的属性来表示节点的类型,因为满二叉树的性质很容易通过树的结构来判断。