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.java code :
/** * 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 TreeNode sortedListToBST(ListNode head) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(head == null) return null; int len = 0; ListNode tmp = head; while(tmp != null) { len++;tmp = tmp.next; } int[] array = new int[len]; int i = 0; tmp = head; while(tmp != null) { array[i++] = tmp.val; tmp = tmp.next; } TreeNode root = null; root = recursion(array, 0, i-1, root); array = null; return root; } public TreeNode recursion(int[] array, int lhs, int rhs, TreeNode root) { if(lhs <= rhs) { int mid = (lhs + rhs) >> 1; root = new TreeNode(array[mid]); root.left = recursion(array, lhs, mid - 1, root.left); root.right = recursion(array, mid + 1, rhs, root.right); } return root; } }
补充:软件开发 , Java ,