[Leetcode]109. Convert Sorted List to Binary Search Tree
阿新 • • 發佈:2017-11-05
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