#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;
}
有序数组(升序)转换为二叉排序树
最新推荐文章于 2024-10-16 17:57:06 发布
本文介绍了一种将有序数组转换为二叉排序树的方法,并通过递归方式实现了该过程。文章给出了完整的C++代码示例,包括二叉树节点结构定义、转换函数及前序遍历输出函数。

1271

被折叠的 条评论
为什么被折叠?



