Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
可以用二分的思想进行递归求解。
public TreeNode subSortedToBST(Vector<Integer> vec, int begin ,int end) //Java { if(begin == end) { TreeNode node = new TreeNode(vec.get(begin)); return node; } int mid = (begin + end)/2; TreeNode node = new TreeNode(vec.get(mid)); if(mid != begin) { TreeNode left = subSortedToBST(vec,begin,mid-1); node.left = left; } if(mid != end) { TreeNode right = subSortedToBST(vec,mid+1,end); node.right = right; } return node; } public TreeNode sortedListToBST(ListNode head) { if(head == null) return null; Vector<Integer> array = new Vector<Integer>() ; while(head != null) { array.add(head.val); head = head.next; } TreeNode result = subSortedToBST(array,0,array.size()-1); return result; }
[leetcode]Convert Sorted List to Binary Search Tree
原文地址:http://blog.csdn.net/chenlei0630/article/details/41682603