跳到主要内容

109.有序链表转换二叉搜索树

链接:109.有序链表转换二叉搜索树
难度:Medium
标签:树、二叉搜索树、链表、分治、二叉树
简介:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

题解 1 - typescript

  • 编辑时间:2020-08-18
  • 执行用时:96ms
  • 内存消耗:46.7MB
  • 编程语言:typescript
  • 解法介绍:通过有序数组进行深度遍历。
function sortedListToBST(head: ListNode | null): TreeNode | null {
if (head === null) return null;
const arr: number[] = [];
while (head !== null) {
arr.push(head.val);
head = head.next;
}
return toBST(arr);
function toBST(array: number[]): TreeNode | null {
const len = array.length;
if (len === 0) return null;
const mid = len >> 1;
const node = new TreeNode(
array[mid],
toBST(array.slice(0, mid)),
toBST(array.slice(mid + 1, len))
);
return node;
}
}