Convert Sorted Array to Binary Search Tree
Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
题意:给一个升序排好的数组,构造一棵二叉查找树或者叫二叉搜索树BST,要求这颗树是平衡的
BST:二叉查找树,左子树所有节点都小于根节点。右子树所有节点都大于根节点,递归定义
堆(大根堆和小根堆)对应的二叉树:根节点大于所有节点(大根堆),递归定义
解题思路:
1.选数组中间元素插入到BST中。递归实现
2.如果value大于root插入右子树,value小于root插入左子树。递归实现
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode root ; public TreeNode sortedArrayToBST(int[] num) {
if(num.length == 0)
return root;
if(1 == num.length){
return new TreeNode(num[0]);
}
int middle = num.length / 2;
root = new TreeNode(num[middle]); createBST(num, 0, middle - 1);
createBST(num, middle + 1, num.length - 1);
return root;
} /**
* 根据num数组,创建一棵二叉查找树
* @param num
* @param start
* @param end
*/
private void createBST(int num[], int start, int end){
int middle = 0;
if(start <= end && start >= 0 && end <num.length){
middle = (start + end) / 2; insertNode(root, num[middle]); createBST(num, start, middle - 1);
createBST(num, middle + 1, end);
}
} /**
* 向root所指的BST二叉查找树中插入value
* @param root
* @param value
*/
private void insertNode(TreeNode root, int value){
if(value > root.val){ //比根节点大,在右子树插入
if(root.right == null){
root.right = new TreeNode(value);
}else{
root = root.right;
insertNode(root, value);
}
}
else{
if(root.left == null){
root.left = new TreeNode(value);
}else{
root = root.left;
insertNode(root, value); //比根节点小的插入左子树
}
}
} // /**
// * 先序遍历
// * @param root
// */
// public void preTravel(TreeNode root){
// if(root != null){
// System.out.print(root.val + " ");
// preTravel(root.left);
// preTravel(root.right);
// }
// }
}
涉及到树的,很多都会用到递归实现,DFS,先序遍历等遍历...
Convert Sorted Array to Binary Search Tree的更多相关文章
- [Leetcode][JAVA] Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree
Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...
- 【leetcode】Convert Sorted Array to Binary Search Tree
Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...
- 【LeetCode OJ】Convert Sorted Array to Binary Search Tree
Problem Link: http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Same idea ...
- 34. Convert Sorted List to Binary Search Tree && Convert Sorted Array to Binary Search Tree
Convert Sorted List to Binary Search Tree OJ: https://oj.leetcode.com/problems/convert-sorted-list-t ...
- LeetCode:Convert Sorted Array to Binary Search Tree,Convert Sorted List to Binary Search Tree
LeetCode:Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in asce ...
- 37. leetcode 108. Convert Sorted Array to Binary Search Tree
108. Convert Sorted Array to Binary Search Tree 思路:利用一个有序数组构建一个平衡二叉排序树.直接递归构建,取中间的元素为根节点,然后分别构建左子树和右 ...
- [LeetCode] 108. Convert Sorted Array to Binary Search Tree ☆(升序数组转换成一个平衡二叉树)
108. Convert Sorted Array to Binary Search Tree 描述 Given an array where elements are sorted in ascen ...
- LeetCode: Convert Sorted Array to Binary Search Tree 解题报告
Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...
- 108. Convert Sorted Array to Binary Search Tree 109. Convert Sorted List to Binary Search Tree -- 将有序数组或有序链表转成平衡二叉排序树
108. Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascendin ...
随机推荐
- Python之路【第五篇】:面向对象及相关
Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否 ...
- 3月2日 Linked List Cycle
今天星期天,准备好周一的PPT内容,再回来做题,以后考虑周末做一个APP或者微信帐号玩吧. 回到题目, Linked List Cycle,一个检查单项链表是否有环路的问题. 题目周五的时候就简单做过 ...
- 隐藏DLL
先来推广一下QQ群:61618925.欢迎各位爱好编程的加入. 在外挂或者病毒中,经常需要隐藏掉自己注入的DLL,以免被发现.下面就是一个隐藏DLL的通用模块,用的时候只需要加入到相关模块中即可. 详 ...
- 仿AS语法来写HTML5—第1章,显示一张图片
最近开始学习html5,因为一直都是研究as,所以还是觉得as顺眼一点,但是html5也不能不学,于是就想出了,可以把html5用as的语法来写出来,做游戏应该来的比较顺手一些,下面开始第一篇 第一篇 ...
- dwz简单配置与操作
1.首先将dwz的文件放到你的项目中(http://yunpan.cn/QbTH4kN6UXX9B) 2.在页面中将前台数据复制到页面中,将js,css等路径配置好 3.这个地方一定要配置好,xml文 ...
- read 不回显的方法
方法就是: stty -echo #设置输入字符不回显 #此处用read语句接收用户输入的内容 stty echo #取消不回显状态 stty erase '^H'
- Sqlserver数据库存储路径的修改
Sqlserver数据库存储路径的修改 Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在 ...
- aspx页面与服务器控件间运行原理
一.进入服务器控件以及aspx页面前,必须的准备: a)在WebForm 中只要带有runat="server" 那么那就是一个控件. b)如果form有runat="s ...
- Eval is Devil-MongoDB master/slave上运行Eval遇到的问题
随便写一句,以免有跟我一样的人遇到这个问题. 驱动版本:MongoDB C# Driver 1.7.0 当在Master/Slave集群上使用Eval的时候,Eval操作只会在Master结点上运行, ...
- WordPress 撰写文章页面显示所有标签
WordPress 撰写文章时,点击"从常用标签中选择"只显示45个常用的标签,很多情况下还需手工再次输入标签,这样的限制感觉很不方便,通过下面的方法可以解除这个限制,显示全部标签 ...