leetcode--ConvertSortedArraytoBinarySearchTree

来源:互联网 发布:seo三人行 编辑:程序博客网 时间:2024/06/05 17:22

思路:取中位数作为当前的根节点,中位数左边的数组递归的计算左子节点,中位数右边的数组递归计算右子节点。

/** * Created by marsares on 15/6/15. */public class ConvertSortedArraytoBinarySearchTree {    public TreeNode sortedArrayToBST(int[] nums) {        if(nums==null)return null;        if(nums.length==0)return null;        return traversal(nums,null);    }    public TreeNode traversal(int[]nums,TreeNode root){        if(nums==null)return null;        if(root==null){            root=new TreeNode(nums[medium(nums)]);            return traversal(nums,root);        }        root.left=traversal(subnums(nums,0,medium(nums)),root.left);        root.right=traversal(subnums(nums,medium(nums)+1,nums.length),root.right);        return root;    }    private int medium(int[]nums){        if(nums.length%2==0)return nums.length/2-1;        else return nums.length/2;    }    private int[] subnums(int[]nums,int start,int end){        if(start==end)return null;        int[]nums2=new int[end-start];        int j=0;        for(int i=start;i<end;i++){            nums2[j]=nums[i];            j++;        }        return nums2;    }    public static void main(String[]args){        ConvertSortedArraytoBinarySearchTree csatbst=new ConvertSortedArraytoBinarySearchTree();        BinaryTreeSerialize bts=new BinaryTreeSerialize();        int[]array={1,2,3,4,5};        TreeNode root=csatbst.sortedArrayToBST(array);        System.out.println(bts.Serialize(root));    }}


0 0
原创粉丝点击