将一个已经排序好的数组变成height最小的BinaryTree
2011-04-22 04:38
232 查看
Node* CreateBinaryTree(int* arr, int leftIndex, int rightIndex) { if (rightIndex<leftIndex) { return NULL; } int currentIndex = (leftIndex + rightIndex) /2; Node* p = new Node(); p->data = arr[currentIndex]; p->lchild = CreateBinaryTree(arr, leftIndex, currentIndex-1); p->rchild = CreateBinaryTree(arr, currentIndex+1, rightIndex); }
Convert a sorted Array to a BinaryTree with minimum height.
中心思想就是通过3个参数,一个输入的array,一个从哪里开始的index,一个在哪里结束的index,这三个参数。
然后通过递归来调用。
每次都是取中间一个,然后左孩子则是通过同样算法取左半边的array,右孩子是通过同样算法取右半边的array。
最终形成一颗二叉树。
相关文章推荐
- 把排序数组转换为高度最小的二叉搜索树convert-sorted-array-to-binary-search-tree-with-minimal-height
- lintcode convert-sorted-array-to-binary-search-tree-with-minimal-height 把排序数组转换为高度最小的二叉搜索树
- Leetcode 108 Convert Sorted Array to Binary Search Tree 将一个有序数组变成BST
- 对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一行, 将除第一行外的行中最小元素所在行调整为第2行, 将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推
- Convert Sorted Array to Binary Search Tree 将排序的数组转换为二叉搜索树
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数
- 求一个排序数组中绝对值最小的数
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 面试题8:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
- 有一个已经排序号的数组。现在输入一个数,要求按原来的规律将它插入数组中。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 输入一个已经按升序排序过的数组和一个数字
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 算法习题14:输入一个已经按升序排序过的数组和一个数字
- LeetCode-108-Convert Sorted Array to Binary Search Tree(转化已排序数组到二叉排序树)
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。