/**
* 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) return null;
ListNode result = new ListNode(0);
result.next = head;
int n = 0;
while(head != null) {
n++;
head = head.next;
}
return builder(result.next, 0, n - 1);
}
private TreeNode builder(ListNode head, int start, int end) {
if(start > end) {
return null;
}
int mid = start + (end - start) / 2;
ListNode result = new ListNode(0);
result.next = head;
for(int i = 0; i < mid; i++) {
head = head.next;
}
TreeNode root = new TreeNode(head.val);
root.left = builder(result.next, start, mid - 1);
root.right = builder(result.next, mid + 1, end);
return root;
}
}
Convert Sorted List to Binary Search Tree
最新推荐文章于 2020-04-13 06:45:19 发布
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } *//** * Definition for a binary tree node. * pub...
摘要由CSDN通过智能技术生成