c语言顺序表创建二叉树
时间: 2023-09-26 13:13:45 浏览: 52
C语言中顺序表创建二叉树的方法与Python类似,也可以使用递归实现。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* create_tree_from_list(int* list, int size, int index) {
if (index >= size || list[index] == -1) {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = list[index];
root->left = create_tree_from_list(list, size, 2*index+1);
root->right = create_tree_from_list(list, size, 2*index+2);
return root;
}
void inorder_traversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorder_traversal(root->left);
printf("%d ", root->val);
inorder_traversal(root->right);
}
int main() {
int list[] = {1, 2, 3, -1, -1, 4, 5};
int size = sizeof(list) / sizeof(int);
TreeNode* root = create_tree_from_list(list, size, 0);
inorder_traversal(root);
return 0;
}
```
在这个示例中,我们使用了 `-1` 表示一个节点为空。`create_tree_from_list` 函数的实现中,当节点为空或者当前的索引超出了顺序表的大小时,返回 `NULL`。否则,根据当前索引创建一个节点,并递归调用创建左右子树的函数。`inorder_traversal` 函数对二叉树进行中序遍历,以验证树的正确性。