有序鏈表轉換爲平衡二叉樹(BST)

有序單鏈錶轉換爲平衡二叉樹。
TreeNode *buildTree(ListNode *&list,int n)
{
	if (n == 0)
		return NULL;
	
	TreeNode *root = new TreeNode(0);
	root->left = buildTree(list,n / 2);
	root->val = list->val;
	list = list->next;
	root->right = buildTree(list,n - n / 2 - 1);
	return root;
}

TreeNode* sortedListToBST(ListNode* head) 
{
	int size = 0;
	ListNode *p = head;
	while (p)
	{
		size++;
		p = p->next;
	}
	p = head;
	ListNode *list = head;
	return buildTree(list,size);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章