Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
Solution1:
自顶向下构建BST。不足之处是每次构建节点都要遍历寻找中间节点。
public TreeNode sortedListToBST(ListNode head) { return toBST(head, null); } public TreeNode toBST(ListNode head, ListNode end) { if(head == end) return null; ListNode mid = findMidNode(head, end); TreeNode node = new TreeNode(mid.val); node.left = toBST(head, mid); node.right = toBST(mid.next, end); return node; } public ListNode findMidNode(ListNode head, ListNode end) { if(head==end || head.next==end) return head; ListNode walker = head, runner = head; while(runner != end && runner.next!=end) { walker = walker.next; runner = runner.next.next; } return walker; }
Solution2:
这个办法更好。自底向上构建BST。不用每次寻找中间节点了,直接顺序访问链表。
private ListNode h; public TreeNode sortedListToBST(ListNode head) { if(head == null) return null; h = head; int len = 1; ListNode node = head; while((node=node.next)!=null) len++; return toBST(0, len-1); } public TreeNode toBST(int start, int end) { if(start > end) return null; int m = (start+end)>>1; TreeNode left = toBST(start, m-1); TreeNode root = new TreeNode(h.val); h = h.next; TreeNode right = toBST(m+1, end); root.left = left; root.right = right; return root; }
相关推荐
《leetcode-solutions》,刷算法题,需要有一定的英文阅读能力。。。
IDEA 插件,lettcode刷题,leetcode-editor7.4版本下载进行本地导入(直接将压缩包拖进IDEA即可)
Algorithm-LeetCode-Sol-Res.zip,干净,易懂的解决方案和资源,为leetcode在线判断算法问题。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Algorithm-leetcode-spider.zip,leetcode公司,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
leetcode-tag-Tree
leetcode-cli-plugins leetcode-cli 的第 3 方插件。 什么是 如何使用 如何使用 插件 名称 描述 增强的命令 按公司或标签过滤问题 list 不要在同一台计算机上使 Chrome 的会话过期 login 不要在同一台计算机上使 ...
leetcode 树节点leetcode 226 - 反转二叉树 方法一:递归 C# public TreeNode InvertTree ( TreeNode root ) { if ( root == null ) return root ; var temp = root . left ; root . left = root . right ; root . ...
在IDE中解决LeetCode问题,支持leetcode.com与leetcode-cn.com,满足基本的做题需求。 理论上支持: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion GoLand DataGrip Rider MPS Android Studio。
leetcode 答案解析 golang解答
解题思路思路和LeetCode-python 503.下一个更大元素 II一致,只是这里求的是下标的距离,而不是数值倒序搜索,用到栈,栈里存储索引情况1:若栈为
leetcode-cheat 的发布 它是什么 ? 这是一个chrome 扩展,可以帮助您更高效地使用 leetcode。您可以从 重要: leetcode-cheat 现在只支持中文版。 也就是说不完全支持leetcode.com,但是你可以用leetcode-cn.com代替...
leetcode 答案leetcode 的工具 这个项目提供了一些工具来更容易地测试 ...github.com/zhai3516/leetcode-tools/lckit 用法 lckit --kit=tmp --name="Flatten Binary Tree to Linked List" --type=tree
leetcode-helper-1.7.1
~/.vscode/extensions/leetcode.vscode-leetcode-0.17.0/node_modules/vsc-leetcode-cli/bin/leetcode /usr/local/bin/leetcode 修改模板 open ~/.vscode/extensions/leetcode.vscode-leetcode-0.17.0/node_modules/...
leetcode-editor,在ide中做leetcode练习,支持leetcode.com和leetcode-cn.com,以满足练习的基本需求。理论上支持:intellij idea phpstorm webstorm pycharm rubymine appcode clion goland datagrip rider mps ...
leetcode-tag-dynamic programming
文件中包含了LeetCode中Tag为LinkedList的题目参考代码。
leetcode-tag-Stack
leetcode-cli 注意:这个存储库是为了临时使用而分叉的。 注意:从 webbrowser 复制 cookie 并使用leetcode user -c可以临时修复不能。 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的...
leetcode-tag-array