Convert Sorted Array to Binary Search Tree

来源:互联网 发布:天书世界太极进阶数据 编辑:程序博客网 时间:2024/06/06 02:13

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

思路:刚刚开始的时候没有看到题目中说这个数组是升序的,就觉得很麻烦,既然数组是升序的,那就好办了,题目中说的是要转换为平衡的排序二叉树,要保证左右两边的高度相差不超过1,数组中间的那个数肯定是根结点,然后左子树肯定是左边的子数组构成的,右子树肯定是右边的子数组构成,这个过程可以看成是递归的,也就是重新在左右子数组中构建一棵子树,作为根结点的左右子树即可。

/** * 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)    {        int length=nums.length;        if(length==0) return null;        return constructSubtree(nums,0,length-1);    }    public TreeNode constructSubtree(int[] nums,int left,int right)    {        if(right-left==0) return new TreeNode(nums[left]);        if(left>right) return null;        int mid=(left+right)/2;        TreeNode root=new TreeNode(nums[mid]);        root.left=constructSubtree(nums,left,mid-1);        root.right=constructSubtree(nums,mid+1,right);        return root;    }}
0 0
原创粉丝点击