Leetcode-109. Convert Sorted List to Binary Search Tree

来源:互联网 发布:网龙网络开发怎么样 编辑:程序博客网 时间:2024/06/05 13:35

前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。

博客链接:mcf171的博客

——————————————————————————————

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

这个题目就比较尴尬了,感觉Leetcode是不是抽风了,我对于空输入明明有处理,非说我没处理,然后虽然我效率不高,也误报了一次TLE,结果我看了下论坛的解法,和我差不多。应该是有更快的方法,因为是有序的,每个index的位置是可以算出来的。Your runtime beats 9.60% of java submissions.

public class Solution {    public TreeNode sortedListToBST(ListNode head) {if(null == head) return null;int size = 0;ListNode searchNode = head;while(searchNode != null){ size ++; searchNode = searchNode.next;}if(size == 0) return null;return generateBST(head,size);    }    private TreeNode generateBST(ListNode head,int size){if(size == 0) return null;if(size == 1) return new TreeNode(head.val);if(2 == size){TreeNode root = new TreeNode(head.val);TreeNode right = new TreeNode(head.next.val);root.right = right;return root;}else{int mid = size/2 + 1;ListNode searchNode = head;for(int i = mid; i > 1;i-- ){searchNode = searchNode.next;}TreeNode root = new TreeNode(searchNode.val);TreeNode left = generateBST(head,mid - 1);TreeNode right = generateBST(searchNode.next,size - mid);root.left = left;root.right = right;return root;}    }}




0 0
原创粉丝点击