您的位置:首页 > 其它

Leetcode: Convert Sorted List to Binary Search Tree

2013-07-10 05:55 441 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

最直接的思维是list赋值给array,O(n).

以下为bottom-up递归

/**
* 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 ListNode cur;
public TreeNode sortedListToBST(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
if(head == null)
return null;
int size = 1;
ListNode ptr = head;
this.cur = head;
while(ptr.next != null){
ptr = ptr.next;
size++;
}
return convert(0, size - 1);
}
public TreeNode convert(int start, int end){
if(start > end)
return null;
int mid = start + (end - start) / 2;
TreeNode left = convert(start, mid - 1);
TreeNode parent = new TreeNode(cur.val);
parent.left = left;
cur = cur.next;
parent.right = convert(mid + 1, end);
return parent;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: