Convert Sorted List to Balanced Binary Search Tree (BST)
2015-01-18 21:10 李涛的技术博客 阅读(147) 评论(0) 编辑 收藏 举报(http://leetcode.com/2010/11/convert-sorted-list-to-balanced-binary.html)
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
Code:
BinaryTree* sortedListToBST(ListNode *& list, int start, int end) { if (start > end) return NULL; int mid = start + (end - start) / 2; BinaryTree* leftChild = sortedListToBST(list, start, mid-1); BinaryTree* parent = new BinaryTree(list->data); parent->left = leftChild; list = list->next; parent->right = sortedListToBST(list, mid+1, end); return parent; } BinaryTree* sortedListToBST(ListNode* head, int n) { return sortedListToBST(head, 0, n-1); }