基本思想: 无; 关键点: 无; #include<iostream> #include<string> #include<vector> #include<queue> using namespace std; const int maxn = 1000000; int num[maxn]; in ...
分类:
其他好文 时间:
2020-03-14 01:23:45
阅读次数:
69
引言 数据库的增删改查等操作是开发过程中最为常见也是尤为重要的,尤其是现在大数据的兴起,导致数据存储量急剧增加,提升数据的操作效率就变得尤为关键。 大部分数据库的索引都采用树的结构存储,这是因为树的查询效率相对较高,且保持有序。 对于二叉搜索树的时间复杂度是O(logN),在算法以及逻辑上来分析,二 ...
分类:
其他好文 时间:
2020-03-13 01:35:41
阅读次数:
61
删除二叉搜索树中的节点。题意是给一个二叉搜索树和一个节点key,请将key从BST中删除并维持BST的性质。例子, Example: root = [5,3,6,2,4,null,7] key = 3 5 / \ 3 6 / \ \ 2 4 7 Given key to delete is 3. S ...
分类:
其他好文 时间:
2020-03-12 10:15:46
阅读次数:
59
图解红黑树 一、红黑树的五条规则 红黑树除了符合二叉搜索树的基本规则外,还添加了以下特性: 规则1:节点是红色或黑色的; 规则2:根节点是黑色的; 规则3:每个叶子节点都是黑色的空节点(NIL节点); 规则4:每个红色节点的两个子节点都是黑色的(从每个叶子到根的所有路径上不可能有两个连续的红色节点) ...
分类:
其他好文 时间:
2020-03-10 19:48:14
阅读次数:
64
链接:https://leetcode cn.com/problems/er cha sou suo shu de di kda jie dian lcof/ 代码: ...
分类:
其他好文 时间:
2020-03-10 13:38:43
阅读次数:
38
题目: 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组。 示例:给定如下二叉树 2 / \ 1 3返回: [ [2,1,3], [2,3,1]] 分析: 根据题意分析可知,插入元素的顺序必须从根节点开始插入, ...
分类:
其他好文 时间:
2020-03-07 14:42:01
阅读次数:
85
题目链接:https://www.luogu.com.cn/problem/P1074 详细讲解:https://www.luogu.com.cn/blog/cpp/solution-p1074 当暴力过不了的时候也可以考虑改变搜索的起点从而减少搜索树的大小 #include <algorithm> ...
分类:
其他好文 时间:
2020-03-06 23:57:56
阅读次数:
110
找到两个叶子节点的最低公共节点 思路: 1.若这棵树为二叉搜索树的话,根据特性,我们从根节点遍历,若两个叶子节点值都小于根节点值,则最低公共节点一定在左子树,都大于的话在右子树。当一个小于一个大于时,所到达的节点就是最低公共节点。 2.若这棵树有父指针,那么问题可以转化为求链表的第一个公共节点的问题 ...
分类:
编程语言 时间:
2020-03-06 23:31:30
阅读次数:
89
题目: https://leetcode-cn.com/problems/legal-binary-search-tree-lcci/ 实现一个函数,检查一棵二叉树是否为二叉搜索树。 示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: fa ...
分类:
其他好文 时间:
2020-03-06 17:22:32
阅读次数:
62
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 和之前做的二叉搜素树的中序遍历有相似之处 这个题的思路也是借助二叉搜素树的特性来做。 找到根结点,然后从头遍历直到找到比这个点大的点 左边的为左子树 右边的右子 ...
分类:
其他好文 时间:
2020-03-06 15:45:49
阅读次数:
56