C语言链完美二叉树,以完美二叉树格式递归入树,以完美二叉树格式递归输出,以及递归删除#include <stdio.h> #include <stdint.h> #include <malloc.h> //结构体设计 typedef TreeData; typedef struct tree{ TreeData data; tree *Right; tree *Left; }Tree; /*初始化*/ void Initiate(Tree *root) { root = (Tree *)malloc(sizeof(Tree)); (root)->Left = NULL; (root)->Right = NULL; }
时间: 2023-11-22 11:55:56 浏览: 74
在C语言中,链式存储完美二叉树的实现需要使用结构体和指针。下面是链式存储完美二叉树的代码:
```
#include <stdio.h>
#include <stdlib.h>
//定义树结构
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode, *Tree;
//创建完美二叉树
void createPerfectTree(Tree* root, int depth) {
if (depth == 0) {
*root = NULL;
return;
}
*root = (Tree)malloc(sizeof(TreeNode));
(*root)->data = depth;
createPerfectTree(&((*root)->left), depth - 1);
createPerfectTree(&((*root)->right), depth - 1);
}
//递归输出完美二叉树
void printPerfectTree(Tree root, int depth) {
if (root == NULL) {
return;
}
printPerfectTree(root->right, depth + 1);
for (int i = 0; i < depth; i++) {
printf(" ");
}
printf("%d\n", root->data);
printPerfectTree(root->left, depth + 1);
}
//递归删除完美二叉树
void deletePerfectTree(Tree* root) {
if (*root == NULL) {
return;
}
deletePerfectTree(&((*root)->left));
deletePerfectTree(&((*root)->right));
free(*root);
*root = NULL;
}
int main() {
Tree root;
createPerfectTree(&root, 3);
printPerfectTree(root, 0);
deletePerfectTree(&root);
return 0;
}
```
在上面的代码中,通过定义结构体`TreeNode`来表示完美二叉树的节点,其中包括节点的值`data`和左右子树指针`left`和`right`。然后通过递归方式实现了完美二叉树的创建、输出和删除。其中创建和删除使用了指针的指针,以方便对根节点进行修改。输出时使用了递归和深度参数,以便按照完美二叉树格式输出。
阅读全文