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

Leetcode 109: Convert Sorted List to Binary Search Tree

array leetcode arr con int lin where var fin

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

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     public int val;
 5  *     public ListNode next;
 6  *     public ListNode(int x) { val = x; }
 7  * }
8 */ 9 /** 10 * Definition for a binary tree node. 11 * public class TreeNode { 12 * public int val; 13 * public TreeNode left; 14 * public TreeNode right; 15 * public TreeNode(int x) { val = x; } 16 * } 17 */ 18 public class Solution { 19 public TreeNode SortedListToBST(ListNode head) {
20 var list = new List<int>(); 21 var p = head; 22 23 while (p != null) 24 { 25 list.Add(p.val); 26 p = p.next; 27 } 28 29 int[] nums = list.ToArray(); 30 31 return DFS(nums, 0, nums.Length - 1
); 32 } 33 34 private TreeNode DFS(int[] nums, int start, int end) 35 { 36 if (start > end) return null; 37 if (start == end) return new TreeNode(nums[start]); 38 39 int mid = start + (end - start) / 2; 40 var root = new TreeNode(nums[mid]); 41 root.left = DFS(nums, start, mid - 1); 42 root.right = DFS(nums, mid + 1, end); 43 44 return root; 45 } 46 }

Leetcode 109: Convert Sorted List to Binary Search Tree