建立一棵含有n个结点的二叉树,并采用二叉链表存储 C语言
时间: 2024-05-05 19:21:21 浏览: 63
定义二叉树结构体节点类型:
```
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左子树指针
struct TreeNode* right; // 右子树指针
} TreeNode;
```
定义二叉树的创建函数,以先序遍历的方式输入二叉树节点的值:
```
// 创建二叉树
TreeNode* createBinaryTree(int arr[], int n, int i)
{
if (i >= n || arr[i] == -1) { // 如果节点为-1或者i>=n,返回NULL
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode)); // 创建节点
root->val = arr[i]; // 节点赋值
root->left = createBinaryTree(arr, n, 2 * i + 1); // 递归创建左子树
root->right = createBinaryTree(arr, n, 2 * i + 2); // 递归创建右子树
return root; // 返回根节点
}
```
其中,arr是节点值数组,n是节点个数,i是当前节点索引。
例如,创建一个如下所示的二叉树:
```
1
/ \
2 3
/ \ / \
4 5 6 7
```
可以用以下代码创建:
```
int arr[] = {1, 2, 3, 4, 5, 6, 7};
int n = 7;
TreeNode* root = createBinaryTree(arr, n, 0);
```
阅读全文