如何创建一棵用二叉链表存储的以root为根的二叉树?

如何创建一棵用二叉链表存储的以root为根的二叉树?
二叉链表

#include <stdio.h>
#include <stdlib.h>

// 定义二叉树结点
typedef struct TreeNode
{
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

// 创建一棵二叉树
TreeNode* createBinaryTree(int *arr, int size, int index)
{
    TreeNode *root = NULL;

    // 如果当前索引不越界
    if (index < size)
    {
        // 创建新结点
        root = (TreeNode*)malloc(sizeof(TreeNode));
        root->val = arr[index];
        root->left = NULL;
        root->right = NULL;

        // 递归创建左子树
        root->left = createBinaryTree(arr, size, 2 * index + 1);

        // 递归创建右子树
        root->right = createBinaryTree(arr, size, 2 * index + 2);
    }

    return root;
}

int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6, 7};
    int size = sizeof(arr) / sizeof(int);

    // 创建二叉树
    TreeNode *root = createBinaryTree(arr, size, 0);

    return 0;
}

望采纳