![](https://csdnimg.cn/release/download_crawler_static/88882509/bg1.jpg)
要将有序链表转换为高度平衡的二叉搜索树,可以使用递归的方法。
思路如下:
1. 如果链表为空,直接返回 null。
2. 使用快慢指针找到链表的中间节点,作为二叉搜索树的根节点。
3. 以中间节点为分界,将链表分成前后两部分。
4. 递归地构建二叉搜索树的左右子树,分别使用前后两部分的链表作为输入。
5. 将根节点连接到左右子树的根节点。
6. 返回根节点。
以下是 Java 代码实现:
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
class Solution {
public TreeNode sortedListToBST(ListNode head) {
if (head == null) {
return null;
}
if (head.next == null) {
return new TreeNode(head.val);
}
ListNode prev = null;
ListNode slow = head;
ListNode fast = head;