Given the head of a singly linked list whose values are sorted in increasing order, build a height-balanced binary search tree holding those values and return its root.
- Height-balanced: for every node, the heights of its two subtrees differ by at most one
- Any balanced shape is accepted; an empty list gives
null - A list has no random access. Finding the middle by walking at every level costs O(n log n); aim for O(n) by building the tree in in-order and advancing one cursor through the list
fromArray(values), inorder(root) and isHeightBalanced(root) are provided