给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
来源:互联网 发布:淘宝网的鞋子 编辑:程序博客网 时间:2024/04/28 13:07
给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
题意:给定一个有序整数数组,元素各不相同且按照升序排列,让编写一个算法,创建一个高度最小的二叉查找树
二叉查找树定义:对于任意一个结点,左边的结点均小于它,右边的结点均大于它
思路:要创建一个高度最小的树,就必须让左右子结点的数量越接近越好,也就是说,要让中间值成为根节点,这样,左边的一半是左子树,右边的一半是右子树。然后,继续以类似的方式构造整棵树,数据每一段的中间值成为根元素,左边一半成为左子树,右边一半成为右子树。
递归实现如下:
#include <iostream>#include<vector>using namespace std;struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};class Solution {public:TreeNode* CreateMinnumTree(vector<int> &arr, int start, int end){if (start > end)return NULL;if (start == end) {TreeNode* root = new TreeNode(arr[start]);return root;}int mid = (start + end) / 2;TreeNode* root = new TreeNode(arr[mid]);root->left = CreateMinnumTree(arr, start, mid - 1);root->right = CreateMinnumTree(arr, mid + 1, end);return root;}TreeNode* CreateMinnumBSTree(vector<int>& arr) {if (arr.empty())return NULL;return CreateMinnumTree(arr, 0, arr.size() - 1);}};void preOrder(TreeNode* root) {if (root != NULL){cout << root->val << " ";preOrder(root->left);preOrder(root->right);}}int main(){vector<int> arr = { 1,2,3,4,5,6,7 };Solution s;TreeNode* root = s.CreateMinnumBSTree(arr);preOrder(root);return 0;}
阅读全文
1 0
- 给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
- [Java]给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
- 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
- 给定一个有序数组(递增),构建一棵具有最小高度的二叉树
- (016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)
- 给定有序数组,创建高度最小的二叉查找树
- 给定一个有序的数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉查找树?
- 给定一个有序数组,元素各不相同且升序排列,创建一个高度最小的二叉查找树
- 【Java】给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树
- 有序数组创建高度最小的二叉查找树
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。 ---快速解法
- 给定一个有序的链表或者数组,构造一棵二叉搜索树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- Cracking coding interview(4.3)给定一个排好序的数组创建最小高度的二叉树
- 在有序递增数组中查找一个缺少的数字
- 给定数组求二叉查找树并返回高度
- C/C++删除单向链表全部匹配节点
- Android开发无线调试
- 七、输入/输出流--streambuffer类介绍--
- Python 边做边学 9.5 数据库操作--分页条件单元(Qpage)
- javaseday25(gui)
- 给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
- HTML常用标签的用法以及介绍
- A
- Ubuntu 16.04出现:Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/
- Windows API 图形界面编程——获取屏幕分辨率、DPI,更改窗口背景颜色
- 《大道至简》的读后感
- 利用dom4j将 java bean生成xml
- 制作简单的广告条滚动
- SpringMVC将post方法转变成put或者delete