LeetCode-Convert Sorted List to Binary Search Tree

来源:互联网 发布:三级网络技术题库软件 编辑:程序博客网 时间:2024/06/16 13:10
作者:disappearedgod
文章出处:http://blog.csdn.net/disappearedgod/article/details/23621903
时间:2014-8-19

题目

Convert Sorted List to Binary Search Tree

 Total Accepted: 16590 Total Submissions: 61016My Submissions

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


解法
/** * 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) {        if(head == null)            return null;        int length = 0;        ListNode p = head;        for(; p != null; p = p.next){            length++;        }        return sortedListToBST(head, 0, length-1);    }     public TreeNode sortedListToBST(ListNode head,int low, int high) {         if(low > high)            return null;         ListNode p = head;         int mid = low + (high - low) / 2;                  for(int i = low; i < mid ; i++){             p = p.next;         }         TreeNode t = new TreeNode(p.val);         t.left = sortedListToBST(head, low, mid-1);         t.right = sortedListToBST(p.next, mid+1,high);         return t;     }         }


0 0
原创粉丝点击