# 有序链表转换二叉搜索树

<p>给定一个单链表，其中的元素按升序排序，将其转换为高度平衡的二叉搜索树。</p>

<p>本题中，一个高度平衡二叉树是指一个二叉树<em>每个节点&nbsp;</em>的左右两个子树的高度差的绝对值不超过 1。</p>

<p><strong>示例:</strong></p>

<pre>给定的有序链表： [-10, -3, 0, 5, 9],

一个可能的答案是：[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树：

      0
     / \
   -3   9
   /   /
 -10  5
</pre>


## template

```cpp
#include <bits/stdc++.h>
using namespace std;

struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

struct ListNode
{
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Solution
{
public:
    vector<int> nums;
    TreeNode *create(int low, int high)
    {
        if (low > high)
            return NULL;
        int mid = (low + high) / 2;
        auto root = new TreeNode(nums[mid]);
        root->left = create(low, mid - 1);
        root->right = create(mid + 1, high);
        return root;
    }
    TreeNode *sortedListToBST(ListNode *head)
    {
        while (head)
        {
            nums.push_back(head->val);
            head = head->next;
        }

        return create(0, nums.size() - 1);
    }
};


```

## 答案

```cpp

```

## 选项

### A

```cpp

```

### B

```cpp

```

### C

```cpp

```