通过有序数组生成平衡搜索二叉树

#include "Tree.h"
using namespace std;

Node* genera(int* sortArr, int start, int end)
{
    if(start > end)
        return nullptr;
    int mid = (start + end) / 2;
    Node* head = new Node(sortArr[mid]);
    head->left = genera(sortArr, start, mid - 1);
    head->right = genera(sortArr, mid + 1, end);
    return head;
}
Node* generateTree(int* sortArr, int length)
{
    if(sortArr == nullptr)
        return nullptr;
    return genera(sortArr, 0, length - 1);
}

int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    Node* head = generateTree(arr, sizeof(arr)/sizeof(int));
    Print(head);
}

猜你喜欢

转载自blog.csdn.net/wzc2608/article/details/80870241