有序数组(升序)转换为二叉排序树

来源:互联网 发布:cad2016 for mac 编辑:程序博客网 时间:2024/05/21 13:59

#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;}