Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
解題思路:
同上題,JAVA實現如下:
public TreeNode sortedListToBST(ListNode head) {
ArrayList<Integer> list=new ArrayList<Integer>();
while(head!=null){
list.add(head.val);
head=head.next;
}
return sortedListToBST(list,0,list.size()-1);
}
static public TreeNode sortedListToBST(ArrayList<Integer> list, int begin, int end) {
if (begin>end)
return null;
TreeNode root = new TreeNode(list.get((begin+end) / 2));
root.left=sortedListToBST(list,begin,(begin+end) / 2-1);
root.right=sortedListToBST(list,(begin+end) / 2+1,end);
return root;
}