/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {ListNode} head * @return {TreeNode} */ var sortedListToBST = function(head){ if(!head){ returnnull; } var cur = head; var count = 0; while(cur !== null){ cur = cur.next; count++; } varlist = []; list.push(head); return helper(list, 0, count-1); };
var helper = function(list, l, r){ if(l>r){ returnnull; } var m = Math.floor((l+r)/2); // left var left = helper(list, l, m-1); var root = new TreeNode(list[0].val); root.left = left; list[0] = list[0].next; // right root.right = helper(list, m+1, r); return root; }