[leetcode]Convert Sorted Array to Binary Search Tree (有序数组转化为二叉搜索树 C语言)

来源:互联网 发布:opencv分水岭分割算法 编辑:程序博客网 时间:2024/04/28 14:00

Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
题意:给定一颗有序数组,求出二叉搜素树
解题思路:二叉搜索树满足的条件是:左子树<根节点<右子树
采用递归思路:对有序数组进行二分,数组中间的输就是二叉树的根节点,然后对子数组继续进行二分,得到的中间节点分别是二叉树的左子树或者右子树。
实现C语言代码如下:

/** * Definition for binary tree * struct TreeNode { *     int val; *     struct TreeNode *left; *     struct TreeNode *right;  * }; */struct TreeNode *sortedArrayToBST(int num[], int n) {    int i,low,high,mid;    struct TreeNode *tree;    low = 0;    high = n;    mid = (low+high)/2;    if(low < high){        tree = (struct TreeNode *)malloc(sizeof(struct TreeNode));        tree->val = num[mid];        tree->left = sortedArrayToBST(num,mid);        tree->right = sortedArrayToBST(num+mid+1, n-mid-1);    }else{        tree = NULL;    }    return tree;}
0 0