Leetcode 108. Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

解析

二叉排序樹又叫二叉查找樹,英文名稱是:Binary Sort Tree. BST的定義就不詳細(xì)說了,我用一句話概括:左 < 中 < 右。 根據(jù)這個原理,我們可以推斷:BST的中序遍歷必定是嚴(yán)格遞增的。
由于題目要求是平衡二叉查找樹,因此,我們需要將數(shù)組分為兩半,分別作為左右子數(shù)來保持平衡,用遞歸的方法很容易實(shí)現(xiàn)。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* convert(int* nums,int numsSize,int left,int right)
{
    if(left==right)
    {
        struct TreeNode *newTreeNode=(struct TreeNode *)malloc(sizeof(struct TreeNode ));
        newTreeNode->val=nums[left];
        newTreeNode->left=NULL;
        newTreeNode->right=NULL;
        return newTreeNode;
    }
    if(left<right)
    {
        struct TreeNode *rootNode=(struct TreeNode *)malloc(sizeof(struct TreeNode ));
        rootNode->val=nums[(left+right)/2];
        rootNode->left=convert(nums,numsSize,left,(left+right)/2-1);
        rootNode->right=convert(nums,numsSize,(left+right)/2+1,right);
        return rootNode;
    }
    return NULL;
}
struct TreeNode* sortedArrayToBST(int* nums, int numsSize) {
    if(numsSize==0)return NULL;
    else
        return convert(nums,numsSize,0,numsSize-1);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容