二叉树---建立高度最小的二叉树
2016-08-15 11:27
323 查看
本文涉及到的代码可以在我的github中找到。
题目描述:
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
分析:
这里题目只是要求返回二叉树的高度,虽然我们可以用公式直接算出来,不过我们是出于练习的目的,因此我们这里也建个树。
首先使用公式计算的方法的一种代码:
下面我们实实在在的建立一个BST,并计算他的高度。
题目描述:
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
分析:
这里题目只是要求返回二叉树的高度,虽然我们可以用公式直接算出来,不过我们是出于练习的目的,因此我们这里也建个树。
首先使用公式计算的方法的一种代码:
package newcoder; import java.util.*; public class MinimalBST { public int buildMinimalBST(int[] vals) { // write code here int length = vals.length; int count = 0; while (length != 1) { length = length >> 1; count++; } return ++count; } }
下面我们实实在在的建立一个BST,并计算他的高度。
public Node getMiniBst(int[] vals, int start, int end) { if (start > end)//start==end的情况也是一层节点,因此不能加入这个条件。 { return null; } int mid = start + (end - start) / 2; Node root = new Node(vals[mid]); root.left = getMiniBst(vals, start, mid - 1);//构建左子树 root.right = getMiniBst(vals, mid + 1, end);//构建右子树 return root; }
相关文章推荐
- 4.3---建立高度最小二叉树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- 二叉树最小高度
- 把排序数组转化为高度最小的二叉树
- Lintcode---把排序树组转换为高度最小的二叉树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- C++关于搜索二叉树的建立,查询,删除,求最大,最小元素
- 数据结构(C语言实现) - 二叉树的基本操作(建立,遍历,结点数,叶子结点数,高度,按树状打印,输出叶子结点等)
- 【IT笔试面试题整理】有序数组生成最小高度二叉树
- Cracking coding interview(4.3)给定一个排好序的数组创建最小高度的二叉树
- 二叉树的建立、遍历、深度、高度及层次遍历
- 算法导论第十二章关于搜索二叉树的建立,查询,查找最大最小元素值,查找给定结点的直接后继
- 给定一个有序数组(递增),构建一棵具有最小高度的二叉树
- 二叉树基本操作的递归实现(二叉树建立,先序,中序,后序,深度的递归遍历。广度优先,高度优先的非递归遍历)
- Minimum Depth of Binary Tree 求二叉树最小高度/深度@LeetCode
- 给定一个有序数组(递增),构建一棵具有最小高度的二叉树
- (016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)
- 把顺序数组转为高度最小的二叉树(算法)
- 二叉树的最小高度,最大高度(深度)和宽度
- 二叉树的最小高度