108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:阿里巴巴服装淘宝网 编辑:程序博客网 时间:2024/06/07 13:20


1 题目

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

2 代码


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode sortedArrayToBST(int[] nums) {return sortedArrayToBST(nums, 0, nums.length - 1);}/** * 将数组[start, end]转化为二叉树 *  * @param nums 数组 * @param start 开始索引(包含) * @param end 结束索引(包含) * @return */public TreeNode sortedArrayToBST(int[] nums, int start, int end) {TreeNode treeNode = null;if (start > end) {return treeNode;}if (start == end) {return new TreeNode(nums[start]);}int median = start + end;if (median % 2 == 0) {// 2 3 4-->3做上级, 2做左节点,4做右节点median = median / 2;} else {// 2 3 4 5-->4做上级, 2 3做左节点,5做右节点median = median / 2 + 1;}treeNode = new TreeNode(nums[median]);treeNode.left = sortedArrayToBST(nums, start, median - 1);treeNode.right = sortedArrayToBST(nums, median + 1, end);return treeNode;}}



0 0
原创粉丝点击