标签:leetcode
Given
a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
由于已经有序,所以利用二分法创建这棵平衡二叉树,与Sort List类似
需要注意的就是一条链的后半条链的索引范围是[0,high - mid - 1],原来一直纠结在high - mid;
其次,就是注意后半条链的链头。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; next = null; } * } */ /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode sortedListToBST(ListNode head) { int len = 0; ListNode p = head; while(p != null){ len++; p = p.next; } return create(head,0,len - 1); } public TreeNode create(ListNode head, int low , int high){ if(low > high ){ return null; } int mid = (low + high) >> 1; int count = 0; ListNode p = head; while(count < mid){ p = p.next; count++; } TreeNode t = new TreeNode(p.val); t.left = create(head,0,mid-1); t.right = create(p.next,0,high - mid - 1); return t; } }
Runtime: 281 ms
Convert Sorted List to Binary Search Tree
标签:leetcode
原文地址:http://blog.csdn.net/havedream_one/article/details/42560287