Question
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
Code
public TreeNode build(List<Integer> nums, int left, int right) {
if (left <= right) {
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums.get(mid));
root.left = build(nums, left, mid - 1);
root.right = build(nums, mid + 1, right);
return root;
}
return null;
}
public TreeNode sortedListToBST(ListNode head) {
List<Integer> nums = new ArrayList<>();
while (head != null) {
nums.add(head.val);
head = head.next;
}
return build(nums, 0, nums.size() - 1);
}