leetcode-109. Convert Sorted List to Binary Search Tree
2017-01-04 16:29
483 查看
leetcode-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.
这题是个很有意思的题。这题一开始其实和上一题差不多,但是这里比较麻烦的是链表。如果按照上一题的做法需要遍历链表去定位,这就比较没麻烦了。所以这里需用使用快慢指针的方法去定位,这样就快的多了。
链表的题目是比较有意思的,比如哑节点,比如快慢指针,很多地方都很有技巧性,不过这些技巧都是可复制的。
/** * 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) { if(head==null) return null; return helper(head,null); } private TreeNode helper(ListNode head, ListNode tail){ ListNode fast = head; ListNode slow = head; if(head == tail) return null; while(fast!=tail&&fast.next!=tail){ fast = fast.next.next; slow = slow.next; } TreeNode ret = new TreeNode(slow.val); ret.left = helper(head,slow); ret.right = helper(slow.next,tail); return ret; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Debian 7.x 安装Oracle JAVA
- springmvc实现url路由功能
- spring boot 配置 druid/** * 配置druid * Created by adam on 4/11/16. */ @Configuration public class D