Inorder逆向思维,bottom-up
//inorder
public class Solution {
ListNode list;
public TreeNode sortedListToBST(ListNode head) {
int len = 0;
ListNode node = head;
while (node != null) {
len++;
node = node.next;
}
list = head;
return helper(0, len - 1);
}
public TreeNode helper(int start, int end) {
if (start > end) {
return null;
}
int mid = (start + end) / 2;
TreeNode left = helper(start, mid - 1);
TreeNode root = new TreeNode(list.val);
root.left = left;
list = list.next;
root.right = helper(mid+1, end);;
return root;
}
}