Convert Sorted List to Binary Search Tree
2015-08-21 20:56
363 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
public TreeNode sortedListToBST(ListNode head) { // base case if (head == null) return null; ListNode slow = head; ListNode fast = head; ListNode prev = null; // find the median node in the linked list, after executing this loop // fast will pointing to the last node, while slow is the median node. while (fast.next != null) { fast = fast.next; if (fast.next == null) { break; } fast = fast.next; prev = slow; slow = slow.next; } if (prev != null) prev.next = null; else head = null; TreeNode root = new TreeNode(slow.val); root.left = sortedListToBST(head); root.right = sortedListToBST(slow.next); return root; }
public TreeNode sortedListToBST(ListNode head) { if(head == null){ return null; } int size = 0; ListNode runner = head; node = head; while(runner != null){ runner = runner.next; size ++; } return inorderHelper(0, size - 1); } public TreeNode inorderHelper(int start, int end){ if(start > end){ return null; } int mid = start + (end - start) / 2; TreeNode left = inorderHelper(start, mid - 1); TreeNode treenode = new TreeNode(node.val); treenode.left = left; node = node.next; TreeNode right = inorderHelper(mid + 1, end); treenode.right = right; return treenode; }
相关文章推荐
- 你应该掌握的七种回归技术
- 为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性
- js内置对象(概念)
- hdu 1058 Humble Numbers(dp)
- hdu1021Fibonacci Again
- UIKit类图
- 实现微博@@@
- 一点学习链接(来自学堂在线)
- 【面试】C\C++程序基础1
- 九度OJ 题目1209:最小邮票数
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete
- 【Python爬虫学习笔记(1)】urllib2库相关知识点总结
- 关于超链接伪类的使用,:link,:visited,:hover
- 显示图片,VS2010, MFC, OpenCV2
- WordPress安装折腾
- 平衡二叉树的实现代码
- UVA 1658 - Admiral (拆点+最小费用流)
- Java简单聊天室
- 在二维数组寻找两个定点的最短距离(递归)
- 匈牙利算法(二分图匹配)模板