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

来源:互联网 发布:数据分析的实施过程 编辑:程序博客网 时间:2024/06/06 03:38

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

/** * 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) {        TreeNode root = null;        int len = nums.length;        if(len==0) return null;                    root = bst(nums, 0, len-1);            return root;    }        public TreeNode bst(int[] nums, int left, int right){        int len = right-left+1;        if(left>right) return null;        if(len==0) return null;        if(len==1) return new TreeNode(nums[left]);        TreeNode root = new TreeNode(nums[left+len/2]);        root.left=bst(nums, left, left+len/2-1);        root.right=bst(nums, left+len/2+1, right);                return root;            }}



简洁一点

public class ConvertSortedArraytoBinarySearchTree {        public TreeNode sortedArrayToBST(int[] nums) {          return dfs(nums, 0, nums.length - 1);      }        TreeNode dfs(int[] nums, int left, int right) {          if (left > right) return null;          int mid = (left + right) / 2;          TreeNode root = new TreeNode(nums[mid]);          root.left = dfs(nums, left, mid - 1);          root.right = dfs(nums, mid + 1, right);          return root;      }  } 


阅读全文
0 0
原创粉丝点击