二分 Convert Sorted Array to Binary Search Tree
2015-06-01 14:23
337 查看
思路:
递归+二分法。(因为是height balanced,即高度平衡的二叉树)
递归+二分法。(因为是height balanced,即高度平衡的二叉树)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { private: template<typename RandomAccessIterator> TreeNode* buildBST(RandomAccessIterator first, RandomAccessIterator last) { const auto length = distance(first, last); if(length <= 0) return nullptr; auto mid = first + length/2; TreeNode *root = new TreeNode(*mid); root->left = buildBST(first, mid); root->right = buildBST(mid+1, last); return root; } public: TreeNode* sortedArrayToBST(vector<int>& nums) { return buildBST(nums.begin(), nums.end()); } };
相关文章推荐
- Linux下安装SVN客户端
- Git 学习笔记
- zookeeper 原理
- 用 C 语言编写 Windows 服务程序的五个步骤 .
- sql server:float转换成nvarchar
- 文件增量备份工具
- UILabel的使用
- JSPatch
- Android之fragment点击切换和滑动切换结合
- python input 和raw_input 区别
- 操作系统--线程介绍
- Paxos算法与Zookeeper分析
- 操作系统--线程介绍
- java ACM
- The Cow Lexicon(3267)
- Blue Jeans(3080)
- mysql笔记
- MySQL索引类型一览
- 黑马程序员——多线程
- GNU CC中的attribute