108. Convert Sorted Array to Binary Search Tree #Medium
2016-05-25 14:59
429 查看
leetcode 108. Convert Sorted Array to Binary Search Tree #Medium
题意:给定升序排列的数组,将其转换为BST二叉搜索树
分析:在数组区间[0,n-1]首先取数组中间元素mid=(n-1)/2作为根,从而得到两个子区间,
取左边子区间[0,mid-1]中间元素根的左子树的根,取右边子区间[mid+1,n-1]的中间元素作为根的右子树的根;
重复以上过程直到所有元素加入树中。
以上思路用递归实现如下:
题意:给定升序排列的数组,将其转换为BST二叉搜索树
分析:在数组区间[0,n-1]首先取数组中间元素mid=(n-1)/2作为根,从而得到两个子区间,
取左边子区间[0,mid-1]中间元素根的左子树的根,取右边子区间[mid+1,n-1]的中间元素作为根的右子树的根;
重复以上过程直到所有元素加入树中。
以上思路用递归实现如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ struct TreeNode* sortedArrayToBST(int* nums, int numsSize) { if(!nums || numsSize<1)return NULL; struct TreeNode *p=(struct TreeNode*)malloc(sizeof(struct TreeNode)); int mid=(numsSize-1)/2; p->val=nums[mid]; p->left=sortedArrayToBST(nums,mid); p->right=sortedArrayToBST(nums+mid+1,numsSize-mid-1); return p; }
相关文章推荐
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C++中explict关键字用法
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- 学习C和C++的9点经验总结
- C++中的extern “C”用法详解
- C 语言基础教程(我的C之旅开始了)[七]
- 最大子矩阵问题实例解析
- C字符串操作函数实现方法小结