
tree
葛俊在新泽西
本人微博:葛俊在新泽西
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Crack LeetCode 之 109. Convert Sorted List to Binary Search Tree
http://oj.leetcode.com/problems/convert-sorted-list-to-binary-search-tree/ 对一个BST做中序遍历,就得到了一个有序链表;同理,如果按照中序遍历的顺序对有序链表中的节点建立BST,便得到了对应的BST。以下代码用递归的方法以中序遍历的顺序建立BST。 C++代码和python代码如下,时间复杂度是O(n),空间复杂度是O...原创 2018-10-25 14:07:23 · 136 阅读 · 0 评论 -
Crack LeetCode 之 108. Convert Sorted Array to Binary Search Tree
https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 把有序数组转为二叉查找树,本质上就是对数组做二分查找,中间元素就是根;然后在对左右两个分区迭代二分查找。本题可以用递归函数来解。c++代码和python代码如下,空间复杂度是O(logn),时间复杂度是O(n)。 class Solution {...原创 2018-10-22 18:51:10 · 122 阅读 · 0 评论 -
Crack LeetCode 之 105. Construct Binary Tree from Preorder and Inorder Traversal
https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 这道题已知中序遍历和前序遍历的结果求二叉树。我们发现中序遍历结果和前序遍历结果的结构如下。 中序遍历结果的结构:[左子树中序遍历结果] + 根节点 + [右子树中序遍历结果] 前序遍历结果的结构:根节点 + [左子树前...原创 2018-10-25 16:04:09 · 108 阅读 · 0 评论 -
Crack LeetCode 之 106. Construct Binary Tree from Inorder and Postorder Traversal
https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 本题解法同https://blog.youkuaiyun.com/tassardge/article/details/83378692 故不赘述。 C++代码如下,时间复杂度是O(n),空间复杂度是O(n)。 class S...原创 2018-10-25 16:24:51 · 154 阅读 · 0 评论 -
Crack LeetCode 之 98. Validate Binary Search Tree
https://leetcode.com/problems/validate-binary-search-tree/ 本题要检查BST是否合法。我们知道对BST做中序遍历会得到一个有序序列,所以我们可以中序遍历BST,对各节点保存前序节点,然后检查各节点是否大于其前序节点即可。以下代码的时间复杂度是O(n),空间复杂度也是O(n)。 class Solution { TreeNode...原创 2018-10-25 18:09:11 · 113 阅读 · 0 评论 -
Crack LeetCode 之 99. Recover Binary Search Tree
https://leetcode.com/problems/recover-binary-search-tree/ BST的两个节点被调换了位置,如何恢复? 我们对BST做中序遍历应该得到一个有序序列,但是节点被调换位置的话,中序遍历就会遇到一个节点的前序节点比该节点大的情况,所以我们可以用中序遍历找到位置错误的节点。 节点调换位置有两种情况:一是相邻两个节点被调换;二是不相邻的两个节点被调换。...原创 2018-10-26 18:08:56 · 149 阅读 · 0 评论