题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是 ...
分类:
其他好文 时间:
2020-07-24 21:40:36
阅读次数:
62
二叉搜索树 性质:一个节点x左子树所有点的关键字都比x的关键字小,右子树所有点的关键字都比x的关键字大 treap “树堆” “Tree+Heap” 性质:每个点随机分配一个权值,使treap同时满足堆性质和二叉搜索树性质 复杂度:期望O(logn) 设每个节点的关键字是key,随机权值是rand ...
分类:
其他好文 时间:
2020-07-21 23:10:24
阅读次数:
67
题目描述: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。 今日学习: 1.递归 题解: 1.前两天做了96题是只要求输出数量,动规轻轻松松,就没看递归的题解,今天一思考动规的话太复杂了,临时想的递归,思路对了没实现好 2.3.和我的思路一致,实现方式稍有不同 4.记忆 ...
分类:
其他好文 时间:
2020-07-21 14:17:34
阅读次数:
66
题目 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。 示例: 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种 ...
分类:
其他好文 时间:
2020-07-21 13:38:01
阅读次数:
49
二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树前、中、后序以及按层遍历 二叉查找树的特性,其任一节点,该节点的左子树上的所有值,都比该节点小,该节点的右子树上的所有值,都比该节点大。 查找操作,主要分以下几种情况 如果查找value ...
分类:
其他好文 时间:
2020-07-21 01:26:46
阅读次数:
94
添加元素 注意添加元素后是否符合二叉搜索树的特性 public void add(E element) { elementNotNullCheck(element); // 不能传入空节点 // 传入第一个节点 if(root == null){ root = createNode(element, ...
分类:
其他好文 时间:
2020-07-20 10:34:54
阅读次数:
67
04-树4 是否同一棵二叉搜索树 (25分) 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成 ...
分类:
其他好文 时间:
2020-07-19 23:39:14
阅读次数:
76
给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。 示例: 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结 ...
分类:
其他好文 时间:
2020-07-19 17:50:40
阅读次数:
72
链接:https://leetcode-cn.com/problems/recover-binary-search-tree/ 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
分类:
其他好文 时间:
2020-07-19 11:36:41
阅读次数:
70
中序。 刚拿到题目时,第一想法是递归,但是搞错了二叉搜索树成立的条件。 我以为的条件是:左侧树为二叉搜索树,右侧树为二叉搜索树,且root.right>root>root.left,然后递归。 但是显然这不对,满足以上条件后,root.right.left可能比root要小。 先说正确的递归解法:正 ...
分类:
其他好文 时间:
2020-07-18 22:03:27
阅读次数:
71