2014-03-19 03:34

题目:给定一个排好序的数组,设计算法将其转换为一棵二叉搜索树,要求树的高度最小。

解法:递归生成平衡二叉树,使左右子树的节点数尽量相等,所以对半开最好了。其实也可以生成一棵完全二叉树,不过写法应该不是很方便。

代码:

 // 4.3 Convert sorted unique array to height-balanced binary search tree.
#include <cstdio>
using namespace std; struct TreeNode {
int val;
TreeNode *left;
TreeNode *right; TreeNode(int _val = ): val(_val), left(nullptr), right(nullptr) {};
}; void consructBSTFromSortedArray(vector<int> &v, int left, int right, TreeNode *&root)
{
if (left > right) {
root = nullptr;
} else {
int mid = (left + right + ) / ;
root = new TreeNode(v[mid]);
consructBSTFromSortedArray(v, left, mid - , root->left);
consructBSTFromSortedArray(v, mid + , right, root->right);
}
} void preorderTraversal(TreeNode *root)
{
if (root == nullptr) {
printf("# ");
} else {
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
} void clearBinaryTree(TreeNode *&root)
{
if (root == nullptr) {
return;
} else {
clearBinaryTree(root->left);
clearBinaryTree(root->right);
delete root;
root = nullptr;
}
} int main()
{
TreeNode *root;
int i, n;
vector<int> v; while (scanf("%d", &n) == && n > ) {
for (i = ; i < n; ++i) {
v.push_back(i + );
} consructBSTFromSortedArray(v, , n - , root);
preorderTraversal(root);
printf("\n"); v.clear();
clearBinaryTree(root);
} return ;
}

最新文章

  1. centos下升级mysql后遇到的小问题
  2. mac osx下django-admin.py出现的问题
  3. zk textbox 更改字体大小及高度
  4. 在 Linux 下搭建 Git 服务器
  5. JSPatch常见问题解答
  6. SpringMVC 拦截器不拦截静态资源的三种处理方式
  7. UITableView的性能优化10个小技巧
  8. nginx 偶发 403原因
  9. 第十三章、学习 Shell Scripts 简单的 shell script 练习
  10. C# xml2json
  11. poj3415
  12. 设计师如何为 Android 应用标注尺寸
  13. SharePoint 2013 中将 HTML文件转换为母版页
  14. pytorch学习:准备自己的图片数据
  15. windows2012 IIS部署GeoTrust证书踩过的坑。 视频测试可用 IIS 证书导入
  16. cf1047C-Enlarge GCD-(欧拉筛+map+gcd+唯一分解定理)
  17. web缓存服务器varnish-4.1.6的部署及配置详解
  18. 关于阿里云Centos服务器搭建Java网站不能访问的问题
  19. SharePoint Framework 企业向导(二)
  20. oracle start with connect by prior 递归查询用法

热门文章

  1. Python-Django框架学习笔记——第一课:Hello World
  2. DP之背包问题详解及案例
  3. Ajax(一):XHR的用法
  4. caffe RandomBrightness和RandomContrast
  5. ref 微软官网
  6. PHP中的生成XML文件的4种方法分享
  7. git 简单使用(待完善)
  8. 使用phpExcel批量上传excel表数据到mysql数据库中
  9. yum 仓库配置
  10. 7-4 python 接口开发(提供mock服务)