[leetcode]Convert Sorted List to Binary Search Tree

来源:互联网 发布:halcon机器视觉软件 编辑:程序博客网 时间:2024/06/07 01:08

问题描述:

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

基本思路:

可以用二分的思想进行递归求解。

代码:

public TreeNode subSortedToBST(Vector<Integer> vec, int begin ,int end)  //Java    {        if(begin == end)        {            TreeNode node = new TreeNode(vec.get(begin));            return node;        }                int mid = (begin + end)/2;        TreeNode node = new TreeNode(vec.get(mid));        if(mid != begin)        {            TreeNode left = subSortedToBST(vec,begin,mid-1);            node.left = left;        }        if(mid != end)        {            TreeNode right = subSortedToBST(vec,mid+1,end);            node.right = right;        }        return node;    }    public TreeNode sortedListToBST(ListNode head) {        if(head == null)            return null;                Vector<Integer> array = new Vector<Integer>() ;        while(head != null)        {            array.add(head.val);            head = head.next;        }                TreeNode result = subSortedToBST(array,0,array.size()-1);        return result;            }


0 0