如何将一个有序数组快速插入到一个二叉树中
来源:互联网 发布:视频会议服务器软件 编辑:程序博客网 时间:2024/05/17 06:12
输入一个有序的数组,如何实现将这个有序整数数组放到二叉树中?
分析:对于二叉树,可以将这个有序数组插入到二叉搜索树中,毕竟二叉搜索树还是有很多特定的。那么对于创建二叉搜索树来说,就是简单的递归了。关于树的算法设计一定要联想到递归,因为树本身就是递归的函数。
那么可以对于这个有序数组分析,将这个数组的中位数作为根节点,然后对于数组的前半部分创建一个树作为根节点的左子树,后半部分创建一个二叉搜索树作为根节点的右子树。那么就是递归调用了。
#include <iostream>#include <vector>using namespace std;/*将一个有序数组高效地插入到二叉搜素树内 */ typedef struct Bin_tree BinTree;struct Bin_tree{ int value; BinTree* right; BinTree* left;};void InsertFromArray(BinTree*& root,int* array,int start,int end){ if(start >end) return ; root = new BinTree; root->left = NULL; root->right = NULL; int mid = start+(end-start)/2; root->value = array[mid]; InsertFromArray(root->left,array,start,mid-1); InsertFromArray(root->right,array,mid+1,end); }/* 递归 中序遍历二叉树 */void Inorder(BinTree* root){ if(root == NULL) return ; Inorder(root->left); cout<<root->value<<endl; Inorder(root->right);}int main(){ int array[]={1,2,3,4,5,6,7,8,9}; BinTree* root =NULL; InsertFromArray(root,array,0,8); Inorder(root); system("pause"); return 0; }
再有的面试题中,还有这样类似的问题,如何将100w有些的数据插入STL内的Map中,首先是判断Map的底层实现是一个红黑树,是一种更加特殊的二叉搜索树,也可以使用上面的方法进行插入,不过需要注意的是,红黑树毕竟和二叉搜索树不完全一样,在插入过后可能造成颜色的改变
1 0
- 如何将一个有序数组快速插入到一个二叉树中
- 黑马程序员_有一个有序数组,想要将一个元素插入到数组中,并且保证数组的有序
- 将任意整数插入到一个有序数组a中,假设a升序
- 将一个数插入到数组中
- 练习:有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的。如何获取该元素在数组中的位置.(2012.2.17)
- 将一个有序整数数组放在一个二叉树中
- 插入一个整数到一个有序的数组中,并保证该数组是有序的
- 黑马程序员-有一个有序的数组,想要将一个元素插入到该数组中,并保证该数组是有序的
- 将一个数插入到有序的数列中,插入后的数列仍然有序
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 输入一个数插入有序数组中
- 将一个数组中的数据插入到另一个数组中
- 插入排序和将一个数插入有序数组
- linux 动态静态链接库生成与调用方法
- Android工程的目录结构详解
- 关于在JAVA中如何实现简单的动态代理
- STUN在SIP中的工作原理及过程 (转)
- iframe和response.sendRedirect()跳转到父页面的问题----已解决
- 如何将一个有序数组快速插入到一个二叉树中
- 关于xml学习(三)—— DOM4J解析
- 自定义tab指示符--ViewPagerIndicator
- android ndk-gdb 调试的步骤
- 各大IT公司、软件公司员工等级(级别)及薪资
- PS制作印章
- 寻找技术大牛
- quick select 问题
- 第十一章 重构和测试函数式程序