【LeetCode】【109】【Convert Sorted List to Binary Search Tree】【連結串列】
阿新 • • 發佈:2018-12-12
題目:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. 解題思路: 借鑑於:https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/discuss/35476/Share-my-JAVA-solution-1ms-very-short-and-concise
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public TreeNode sortedListToBST(ListNode head) { if(head == null)return null; return toBST(head,null); } public TreeNode toBST(ListNode head,ListNode tail){ if(head == tail)return null; ListNode slow=head,fast=head; while (fast!=tail && fast.next!=tail){ slow = slow.next; fast = fast.next.next; } TreeNode root = new TreeNode(slow.val); root.left = toBST(head,slow); root.right = toBST(slow.next,tail); return root; }