LeetCode(108) Convert Sorted Array to Binary Search Tree
2015-10-17 13:29
453 查看
题目
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.分析
给定一个有序序列,构造一颗平衡的二叉查找树。思想:序列中值构造根节点,递归,前半序列构造左子树,有伴序列构造右子树。
AC代码
/** * 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 { public: TreeNode* sortedArrayToBST(vector<int>& nums) { if (nums.empty()) return NULL; else return make(nums.begin(), nums.end()); } template <typename Iter> TreeNode *make(Iter beg, Iter end) { if (beg == end) return NULL; //求元素节点个数 int size = end - beg; TreeNode *root = new TreeNode(*(beg + size / 2)); root->left = make(beg, beg + size / 2); root->right = make(beg + size / 2 + 1, end); return root; } };
GitHub测试程序源码
相关文章推荐
- 第7周项目5-排队看病模拟
- JAVA字段的初始化规律
- 浅谈delphi创建Windows服务程序与窗体实现交互
- lintcode :最大子数组
- 【图像处理】数字图像处理软件-图片特效--浮雕效果(四)
- Servlet完全教程
- 解决mysql5.6无法显示和插入中文(mac/linux)
- 输入一串字符,统计其中字母,数字,空格及其他符号的个数
- CYPasswordView 使用说明
- POJ-2128
- shell中使用vi退出的注意事项
- easyui动力头 && 动态加入tabs
- 允许svn服务与WINDOWS自己主动启动
- Python集合(set)类型的操作
- 全加器,加法器
- Android Studio 运行java程序
- UINavigationController 常用代码
- DRBD 网络RAID1
- 命名数据网络(NDN)与TCP/IP网络
- ARM虚拟化调研