#include <iostream>
using namespace std;
int arr[] = {1, 2, 3, 4, 5, 6};
typedef struct Node_
{
int data;
Node_ *left, * right;
}Node;
//将有序数组arr转换为二叉排序树
void Convert(Node * & root, int arr[], int left, int right)
{
if (left > right)
{
root = 0;
return;
}
int mid = left + (right - left) / 2;
root = new Node();
root->data = arr[mid];
Convert(root->left, arr, left, mid - 1);
Convert(root->right, arr, mid + 1, right);
}
//前序遍历输出
void preOrder(Node * root)
{
if(!root)
{
return;
}
printf("%d ", root->data);
preOrder(root->left);
preOrder(root->right);
}
int main()
{
int n = sizeof(arr) / sizeof(arr[0]);
Node * root = 0;
Convert(root, arr, 0, n - 1);
preOrder(root);
return 0;
}
有序数组(升序)转换为二叉排序树
最新推荐文章于 2021-05-06 13:36:27 发布