Leetcode_convert-sorted-array-to-binary-search-tree
2014-04-01 15:43
495 查看
地址:http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:先找到头节点,再递归构造左子树和右子树。124ms。
参考代码:
SECOND TRIAL, 60MS
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:先找到头节点,再递归构造左子树和右子树。124ms。
参考代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void construct_tree(TreeNode**p, vector<int>vec) { if(vec.empty()) return; int mid = vec.size()/2; *p = new TreeNode(vec[mid]); vector<int>left_vec, right_vec; for(int i = 0; i<mid; ++i) left_vec.push_back(vec[i]); for(int i=mid+1; i<vec.size(); ++i) right_vec.push_back(vec[i]); construct_tree(&((*p)->left), left_vec); construct_tree(&((*p)->right), right_vec); } TreeNode *sortedArrayToBST(vector<int> &num) { if(num.empty()) return NULL; TreeNode* head = NULL; construct_tree(&head, num); return head; } };
SECOND TRIAL, 60MS
class Solution { private: TreeNode* construct_tree(TreeNode* root, vector<int>& num, int begin, int end) { if(begin > end) return NULL; int mid = (begin+end)/2; root = new TreeNode(num[mid]); root->left = construct_tree(root->left, num, begin, mid-1); root->right = construct_tree(root->right, num, mid+1, end); return root; } public: TreeNode *sortedArrayToBST(vector<int> &num) { return construct_tree(NULL, num, 0, num.size()-1); } };
相关文章推荐
- C# 图片和二进制之间的转换
- CentOS6.3安装 Oracle 11g R2
- linux编程原理之――socket
- jQuery.validate插件
- UIPickerView(滚动选择控制器)
- ARM GNU 汇编宏定义
- 牛人的flappy pig js代码
- 查找二维排序数组中是否含有某个元素
- Android与服务器端数据交互(http协议整合struts2+android)
- 对自己的一些总结!
- 京师博仁心理箱庭(沙盘)8大优势
- C-字符串应用(5)
- 2、ubuntu12.04设置samba
- 在Eclipse中开发WEB项目
- Memcached 理论篇
- redis 安装
- 物理DG角色转换: failover
- UITableView之cell复用
- 转:趣谈大数据
- Maven的pom.xml文件详解①The Basics