Skip to content

Code:

js
import { ArrayToLink, ListNode, TreeNode } from "./common.js";

/**
 * @param {ListNode} head
 * @return {TreeNode}
 */
var sortedListToBST = function(head) {
    let length = 0
    let dummy = head

    while(dummy) {
        dummy = dummy.next
        length++
    }

    const dfs = (left, right) => {
        if (left > right) {
            return null
        }

        const middle = Math.floor((left + right) / 2)
        const l = dfs(left, middle - 1)
        const node = new TreeNode(head.val)

        node.left = l
        head = head.next

        node.right = dfs(middle + 1, right)

        return node
    }


    return dfs(0, length - 1)
};


console.log(sortedListToBST(ArrayToLink([-10,-3,0,5,9])))

❤ With Algorithm