现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请定义有序数组
发布网友
发布时间:2022-04-24 05:54
我来回答
共1个回答
热心网友
时间:2023-10-03 15:04
将有序数组存储到二叉树中,可以考虑用二分法建树。这样建出来的二叉树高度最矮。
TreeNode *BuildTree(int array[], int low, int high)
{
if (low > high)
return NULL;
TreeNode *tmp = (TreeNode *)malloc(sizeof(TreeNode));
tmp->data = array[(low + high) / 2)];
tmp->left = BuildTree(array, low, (low + high) / 2 - 1);
tmp->right = BuildTree(array, (low + high) / 2 + 1, high);
return tmp;
}
热心网友
时间:2023-10-03 15:04
将有序数组存储到二叉树中,可以考虑用二分法建树。这样建出来的二叉树高度最矮。
TreeNode *BuildTree(int array[], int low, int high)
{
if (low > high)
return NULL;
TreeNode *tmp = (TreeNode *)malloc(sizeof(TreeNode));
tmp->data = array[(low + high) / 2)];
tmp->left = BuildTree(array, low, (low + high) / 2 - 1);
tmp->right = BuildTree(array, (low + high) / 2 + 1, high);
return tmp;
}