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