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 ...
随机推荐
- solr5.5教程-tomcat布署
tomcat和solr在各自官网下载,版本如下: tomcat版本:8.0.24 solr版本:5.5.0 1.solr解压后,目录结构如下: 2.tomcat的webapps里新建solr目录, 把 ...
- Android应用源码安卓短信拦截木马项目源码
温馨提示:本资源由源码天堂整理提供下载转载时请留下链接说明:http://code.662p.com/view/9174.html安卓短信拦截木马源码主要功能就是开机后台启动,拦截本机收到的短信并且转 ...
- html Doctype作用?
Doctype它主要的作用来声明html的版本 <!Doctype html>这是html5的 不写可能会造成html5的功能不能用(具体会不会出错就要看浏览器的容错性)
- CentOS 7服务
重启防火墙service firewalld start/restart/stop 使用systemctl来启动/停止/重启服务要启动一个服务,你需要使用如下命令:# systemctl start ...
- Cannot change version of project facet Dynamic web的解决方法
用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现 ...
- linux常用命令--ps、netstat、find
一.ps 1.1ps命令简介 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那 ...
- Eclipse中Maven的安装
注:初次尝试安装,配置maven,有错误望指正! 1.说明 maven.rar 是maven文件,解压即可,无需安装,但需要配置环境变量MAVEN_HOME,并放在PATH中,
- excute和query
query(update goods set is_delete=1 where goods_id=13)总是出错??为什么, excute(update goods set is_delete=1 ...
- 正确使用stl map的erase方法
先声明:下面的文章是针对windows的用法,因为std::map的erase函数的windows的实现版本是返回一个std::map的迭代器,但是STL标准里面的该函数的返回值确是: map.era ...
- 用过的一些js函数[备份用的]
1.类似php的htmlspecialchars函数,如需要可以自行增加其它代替 function _htmlspecialchars(str) { str = str.replace(/&/ ...