leetcode109~Convert Sorted List to Binary Search Tree
来源:互联网 发布:绝艺 围棋 软件 编辑:程序博客网 时间:2024/05/21 17:48
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
/*
* Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
* 给出一个单链表,里面的元素是升序排列。
* 普通解法是把单链表转化成数组,然后采用上题解法。这里不予给出了。
*/
public class ConvertSortedListtoBST109 { //设置一个快慢指针,快指针每次两步,慢指针每次一步,这样快指针到头的时候,慢指针正好到中间 public TreeNode sortedListToBST2(ListNode head) { if(head==null) return null; return helper(head,null); } private TreeNode helper(ListNode head, ListNode target) { if(head == target) return null; ListNode fast = head; ListNode slow = head; while(fast!=target && fast.next!=target) { fast = fast.next.next; slow = slow.next; } //此时slow到达中间位置 TreeNode root = new TreeNode(slow.val); root.left = helper(head,slow); root.right = helper(slow.next,target); return root; } //设置一个全局变量 ListNode curr; //自底向上建立BST public TreeNode sortedListToBST(ListNode head) { curr = head; int len = 0; //计算链表的长度 while(head!=null) { head = head.next; len++; } //建树 return buildTree(0,len-1); } private TreeNode buildTree(int start, int end) { //没有子节点,直接返回 if(start>end) return null; int mid = start+(end-start)/2; //防止溢出 TreeNode left = buildTree(start, mid-1); TreeNode root = new TreeNode(curr.val); //链表顺序遍历 curr = curr.next; TreeNode right = buildTree(mid+1, end); //将节点链接起来 root.left = left; root.right = right; return root; }}
0 0
- LeetCode109. Convert Sorted List to Binary Search Tree
- [LeetCode109]Convert Sorted List to Binary Search Tree
- leetcode109~Convert Sorted List to Binary Search Tree
- Leetcode109——Convert Sorted List to Binary Search Tree
- LeetCode109 Convert Sorted List to Binary Search Tree
- LeetCode109—Convert Sorted List to Binary Search Tree
- LeetCode109. Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- linux服务器集群下如何搭建内容服务器
- 《神经网络与深度学习》读书笔记(不完全)
- centos安装nfs方法
- redis-配置以及启动方式
- LeetCode:Construct the Rectangle
- leetcode109~Convert Sorted List to Binary Search Tree
- 关于String类的split方法
- DD命令备份Linux系统
- 版本迭代更新—增量更新你的应用
- Error C1189: #error: Please use the /MD switch for _AFXDLL builds
- 关于ECP开源项目的编译与安装
- HTTP 协议中的 Transfer-Encoding
- [一个人的项目] 序
- Spring Task定时任务