随便抓了一个解法来看,一堆空白和括号占了快一半,精简一下30行差不多
public class Solution {
public TreeNode sortedListToBST(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
ListNode temp = head;
int l = 0;
while(temp!=null){
l++;
temp = temp.next;
}
return this.sortedListToBST(head, 0, l-1).node;
}
private Element sortedListToBST(ListNode head, int start, int end){
if(start>end) return new Element(head, null);
int mid = (start+end)/2;
Element left = this.sortedListToBST(head, start, mid-1);
head = left.next;
TreeNode node = new TreeNode(head.val);
head = head.next;
Element right = this.sortedListToBST(head, mid+1, end);
node.left = left.node;
node.right = right.node;
return new Element(right.next, node);
}
}
class Element {
TreeNode node;
ListNode next;
public Element(ListNode n, TreeNode t){
this.node = t;
this.next = n;
}
}