1. 程式人生 > >[Leetcode]109. Convert Sorted List to Binary Search Tree

[Leetcode]109. Convert Sorted List to Binary Search Tree

sorted for nod fin search 鏈表 return != ini

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

思路:二分法;

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 
*/ class Solution { public TreeNode sortedListToBST(ListNode head) { if (head==null) //如果一開始傳進來的是空鏈表,返回null return null; if (head.next==null) //遞歸終止條件 return new TreeNode(head.val); ListNode p = head,q = head,m = head; //
快慢指針找中間值 while (q!=null&&q.next!=null){ q = q.next.next; p = p.next; } q = p.next; TreeNode root = new TreeNode (p.val); while (m.next!=p) m = m.next; m.next
= null; root.left = sortedListToBST(head); //分治 root.right = sortedListToBST(q); return root; } }

[Leetcode]109. Convert Sorted List to Binary Search Tree