C语言创建完全二叉树和非完全二叉树
时间: 2023-12-30 12:24:18 浏览: 41
以下是C语言创建完全二叉树和非完全二叉树的示例代码:
1. 创建完全二叉树:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char data;
struct Node* left;
struct Node* right;
} Node;
Node* createCompleteBinaryTree(char arr[], int n, int index) {
if (index >= n) {
return NULL;
}
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[index];
newNode->left = createCompleteBinaryTree(arr, n, 2 * index + 1);
newNode->right = createCompleteBinaryTree(arr, n, 2 * index + 2);
return newNode;
}
void inorderTraversal(Node* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
int main() {
char arr[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
int n = sizeof(arr) / sizeof(arr[0]);
Node* root = createCompleteBinaryTree(arr, n, 0);
printf("Inorder traversal of the complete binary tree: ");
inorderTraversal(root);
return 0;
}
```
2. 创建非完全二叉树:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char data;
struct Node* left;
struct Node* right;
} Node;
Node* createBinaryTree(char data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
void inorderTraversal(Node* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
int main() {
Node* root = createBinaryTree('A');
root->left = createBinaryTree('B');
root->right = createBinaryTree('C'); root->left->left = createBinaryTree('D');
root->left->right = createBinaryTree('E');
root->right->left = createBinaryTree('F');
root->right->right = createBinaryTree('G');
printf("Inorder traversal of the binary tree: ");
inorderTraversal(root);
return 0;
}
```