convert-sorted-list-to-binary-search-tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
public class Solution { public TreeNode sortedListToBST(ListNode head) { int len=lenOFlist(head); TreeNode root=creatTree(head,0,len-1); return root; } public TreeNode creatTree(ListNode head,int left,int right){ if(left>right)return null; int mid=(right+left+1)/2;/// right-(right-left+1)/2 ListNode p=head; for (int i = left; i < mid; i++) { p=p.next; } TreeNode node=new TreeNode(p.val); TreeNode leftTree=creatTree(head, left, mid-1); TreeNode rightTree=creatTree(p.next, mid+1, right); node.left=leftTree; node.right=rightTree; return node; } public int lenOFlist(ListNode head){ ListNode p=head; int count = 0; while(p!=null){ count++; p=p.next; } return count; } }