class BSTNode
{
public:
BSTNode(int v)
{
value = v;
left = NULL;
right = NULL;
}
int value;
BSTNode *left;
BSTNode *right;
};
class ListNode
{
public:
ListNode(int v)
{
value = v;
left = NULL;
right = NULL;
}
int value;
ListNode *left;
ListNode *right;
};
BSTNode* sortedListToBST(ListNode* &list, int left, int right)
{
if (left > right)
{
return NULL;
}
int mid = left + (right-left)/2;
BSTNode *left = sortedListToBST(list, left, mid-1);
BSTNode *parent = new BSTNode(list->value);
parent->left = left;
list = list->next;
BSTNode *right = sortedListToBST(list, mid+1, right);
parent->right = right;
return parent;
}
BSTNode* sortedListToBST(ListNode *list, int n)
{
return sortedArrayToBST(list, 0, n-1);
}
有序单向链表转换为平衡搜索二叉树
最新推荐文章于 2021-08-29 19:45:09 发布