项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.问题描述

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of everynode never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],
One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

   0/ \-3   9/   /-10  5

2.解法

二叉搜索树如果按中序遍历,得到的是一个有序数组。那么反过来易知,根节点应该是有序数组的中间点,从中间点分开为左右两个有序数组,在分别找出其中间点作为原中间点的左右两个子节点,本质上是二分查找的思想。

3.java版本

import java.util.*;/*** Created by wanglei on 19/4/14.*/
public class ArrayToBST {public static TreeNode buildTree(int[] nums) {TreeNode root = null;if (nums.length > 0) {int midPos = nums.length / 2;int mid = nums[midPos];root = new TreeNode(mid);root.left = buildTree(Arrays.copyOfRange(nums, 0, midPos));root.right = buildTree(Arrays.copyOfRange(nums, midPos+1, nums.length));}return root;}public static void preTraverse(TreeNode root) {if (root != null) {preTraverse(root.left);System.out.println(root.data);preTraverse(root.right);}}public static void main(String[] args) {int[] nums = {-10, -3, 0, 5, 9};TreeNode root = buildTree(nums);preTraverse(root);}
}

4.python版本

class TreeNode(object):def __init__(self, val):self.val = valself.left = Noneself.right = Nonedef sortedArrayToBST(nums):if nums:midPos = len(nums) / 2mid = nums[midPos]root = TreeNode(mid)root.left = sortedArrayToBST(nums[:midPos])root.right = sortedArrayToBST(nums[midPos+1:])return rootdef printTree(root):if root:printTree(root.left)print root.valprintTree(root.right)nums = [-10, -3, 0, 5, 9]
root = sortedArrayToBST(nums)
printTree(root)

Convert Sorted Array to Binary Search Tree(将有序数组转为二叉搜索树)相关推荐

  1. Convert Sorted Array to Binary Search Tree - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Convert Sorted Array to Binary Search Tree - LeetCode 注意点 不要访问空结点 题目要求的是平衡二叉搜 ...

  2. 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 ...

  3. 【数组递归构造二叉树】LeetCode 108. Convert Sorted Array to Binary Search Tree

    LeetCode 108. Convert Sorted Array to Binary Search Tree Solution1:我的答案 构造二叉树利用递归 /*** Definition fo ...

  4. leetcode python3 简单题108. Convert Sorted Array to Binary Search Tree

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百零八题 (1)题目 英文: Given an array where elem ...

  5. PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列

    文章目录 题目分析 题目链接 题目分析 二叉搜索树(BST):左子树小于根结点,右子树大于等于根结点. 二叉搜索树的中序遍历一定是有序序列.所谓中序遍历:先访问左子树,再访问根结点,最后访问右子树. ...

  6. LeetCode: 108. Convert Sorted Array to Binary Search Tree

    题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...

  7. Convert Sorted Array to Binary Search Tree With Minimal Height

    Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height. Exa ...

  8. [LeetCode] Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Hi ...

  9. [LeetCode]Convert Sorted Array to Binary Search Tree

    题目描述:(链接) Given an array where elements are sorted in ascending order, convert it to a height balanc ...

  10. Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 首先 ...

最新文章

  1. caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
  2. 雷克世界:Gyrfalcon加入芯片角斗场,又一款改变AI界的产品问世
  3. Andriod anim translate中的属性介绍
  4. linux下前一天时间格式
  5. IT项目经理学习-德鲁克时间管理
  6. LeetCode 65. 有效数字(逻辑题,难)
  7. python生成10个随机数字符串_python生成随机数、随机字符串
  8. JavaScript巧学巧用
  9. Deepracer 学了就能云驾驭赛车? Deepracer机器学习进阶版干货分享!
  10. flash的计算机知识,Flash CS6计算机动画设计教程
  11. 前端H5面试题CSS:如何解决 margin“塌陷”?
  12. 道客巴巴 文档免积分保存方法
  13. Ruby on rails 实战圣经:Ruby程序语言入门
  14. (Research)肝肿瘤免疫微环境亚型和中性粒细胞异质性
  15. 使用NLTK对文档进行分句
  16. 惠普P1100 series “打印机安装失败,未安装打印机”问题解决方法
  17. FlexRay AUTOSAR网络管理(AUTOSARFRNM)简介
  18. [转帖]Photoshop制作梦幻效果婚纱照片
  19. 建设DevOps统一运维监控平台,全面的系统监控你做好了吗?
  20. 一文解释电路中常用电子元器件应用和选型01

热门文章

  1. Java高质量20问
  2. Web API 处理机制剖析 --- 拨开迷雾看本质
  3. IE8的模式修改优化Windows7
  4. sh与bash中的export语法的区别
  5. 从一个组件的实现来深刻理解 JS 中的继承
  6. 跟我一起数据挖掘(19)——什么是数据挖掘(2)
  7. postman:Could not get any response解决方法
  8. SVM入门(十)将SVM用于多类分类
  9. btrfs文件系统学习总结
  10. couldn't open file: data/coco.names