您的位置:首页 > 其它

Convert Sorted List to Binary Search Tree

2015-03-13 17:11 183 查看
Convert Sorted List to Binary Search Tree

问题:

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

思路:

  典型的dfs思路

我的代码:

public class Solution {
public TreeNode sortedListToBST(ListNode head) {
if(head == null)    return null;
if(head.next == null) return new TreeNode(head.val);
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode mid = getMiddle(head, dummy);
TreeNode root = new TreeNode(mid.val);
TreeNode left = sortedListToBST(dummy.next);
TreeNode right = sortedListToBST(mid.next);
root.left = left;
root.right = right;
return root;
}
public ListNode getMiddle(ListNode head, ListNode dummy)
{
ListNode pre = dummy;
ListNode slow = head;
ListNode fast = head.next;
while(fast != null && fast.next != null)
{
slow = slow.next;
fast = fast.next.next;
pre = pre.next;
}
pre.next = null;
return slow;
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: