首页 > 代码库 > 109. Convert Sorted List to Binary Search Tree

109. 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.

 思路:递归做。不断取中间数,建root。把链表里面的数字都读出来存在list上面进行操作。要多想想这道题是什么样的类型,要用什么方法做比较适合,方便。
/** * 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; } * } */public class Solution {    public TreeNode sortedListToBST(ListNode head) {        List<Integer> res=new ArrayList<Integer>();        while(head!=null)        {            res.add(head.val);            head=head.next;        }        return helper(res,0,res.size()-1);    }    public TreeNode helper(List<Integer> list,int low,int high)    {        if(low>high)        {            return null;        }        int mid=low+(high-low)/2;        TreeNode root=new TreeNode(list.get(mid));        root.left=helper(list,low,mid-1);        root.right=helper(list,mid+1,high);        return root;    }}

 

109. Convert Sorted List to Binary Search Tree