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

题目大意:给定一个升序序列的数组,将其转换为二叉搜索树。

解题思路:数组中间元素是根元素,根元素将数组划分为两部分,两个部分的中心元素分别为根元素的左右孩子,依次递推。。。可用迭代或递归来做。

解法一(迭代):迭代需要自己额外记录下标

    public TreeNode sortedArrayToBST(int[] num) {
if (num == null || num.length == 0) {
return null;
}
if (num.length == 1) {
return new TreeNode(num[0]);
}
Deque<Pair> queue = new ArrayDeque<>();
TreeNode root = new TreeNode(num[(num.length - 1) / 2]);
queue.add(new Pair(0, num.length - 1, root));
while (!queue.isEmpty()) {
Pair pair = queue.poll();
int pre = pair.pre;
int post = pair.post;
int curr = (post + pre) / 2;
TreeNode tNode = pair.node;
if (curr > pre) {
TreeNode left = new TreeNode(num[(curr - 1 + pre) / 2]);
tNode.left = left;
queue.add(new Pair(pre, curr - 1, left));
}
if (post > curr) {
TreeNode right = new TreeNode(num[(post + curr + 1) / 2]);
tNode.right = right;
queue.add(new Pair(curr + 1, post, right));
}
}
return root;
} private static class Pair {
int pre;
int post;
TreeNode node; public Pair(int pre, int post, TreeNode node) {
this.pre = pre;
this.post = post;
this.node = node;
}
}

解法二(递归):

    public TreeNode sortedArrayToBST(int[] num) {
if (num == null || num.length == 0) {
return null;
}
TreeNode root = helper(0, num.length - 1, num);
return root;
} private TreeNode helper(int low, int high, int[] num) {
if (low > high) {
return null;
}
int mid = (low + high) / 2;
TreeNode node = new TreeNode(num[mid]);
node.left = helper(low, mid - 1, num);
node.right = helper(mid + 1, high, num);
return node;
}

Convert Sorted Array to Binary Search Tree——LeetCode的更多相关文章

  1. Convert Sorted Array to Binary Search Tree leetcode java

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

  2. Convert Sorted Array to Binary Search Tree || LeetCode

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * s ...

  3. 【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 ...

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

  5. LeetCode 108. 将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree) 14

    108. 将有序数组转换为二叉搜索树 108. Convert Sorted Array to Binary Search Tree 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索 ...

  6. [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 ...

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

  8. 37. leetcode 108. Convert Sorted Array to Binary Search Tree

    108. Convert Sorted Array to Binary Search Tree 思路:利用一个有序数组构建一个平衡二叉排序树.直接递归构建,取中间的元素为根节点,然后分别构建左子树和右 ...

  9. [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 ...

随机推荐

  1. PHP ServerPush <转>

    http://www.cnblogs.com/hnrainll/archive/2013/05/07/3064874.html

  2. Linux磁盘管理:LVM逻辑卷的拉伸及缩减

    ①查看当前VG的信息,保证VG中有足够的空闲空间 通过 vgdisplay 或者 vgs 命令 [root@rusky ~]# vgs rusky-vg VG #PV #LV #SN Attr VSi ...

  3. 生成PDF并下载。

    例子是生成一个pdf格式的证书: //创建Document Document document = null; //为该Document创建一个Writer实例 PdfWriter writer = ...

  4. APP长时间处于后台,再次调用时提示用户重新登录

    第一步:当应用被处于后台时,调用计时器的start()方法,开始计时 在所有Activity继承的BaseSwiBackAct中的 public void onStop() { EventBus.ge ...

  5. YII框架开发一个项目的通用目录结构

    YII框架开发一个项目的通用目录结构: 3 testdrive/ 4 index.php Web 应用入口脚本文件 5 assets/ 包含公开的资源文件 6 css/ 包含 CSS 文件 7 ima ...

  6. Cognos开发报表如何隐藏列

    情景:当报表必须用到一列的存在,但是不需要显示该列的时候,我们就需要隐藏该列了,所有对象. 如何隐藏呢? 步骤1:选择要隐藏列的列标题和列正文两个部分 步骤2:分别找到左侧属性的条件样式,新建条件样式 ...

  7. ArcGis(01)——地图切片以及发布底图服务

    ArcGis(01)——地图切片以及发布底图服务 环境 操作系统:win10_x64 Gis版本:Arcis server 10.2 准备 1.tif格式地图资源 2.Arcis server 10. ...

  8. 键盘数字对应的ASCII码(keycode码)

    keycode 1 = 鼠标左键keycode 2 = 鼠标右键keycode 3 = Cancelkeycode 4 = 鼠标中键keycode 8 = BackSpace keycode 9 = ...

  9. SOA与EBS集成_Package 调用维护

    介绍SOA Suite与EBS集成成,使用PACKAGE调用集成的组合程序的运维方法: 1.打开组合程序,在oracle adapter上右键,选择edit,在配置向导中跳转到第五步,确认组合程序调用 ...

  10. 你真的了解console吗?

    对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重,取而代之则是会将值输出到控制台上方便调试.最常用的语句就是console.log(expres ...