输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 ...
分类:
其他好文 时间:
2019-08-09 01:28:56
阅读次数:
94
Treap 普通二叉搜索树(BST) 对于任一棵子树,根节点权值大于左子树所有结点的权值,小于右子树所有结点权值 1. 结点结构体&初始化函数 3. 右旋 4. 左旋 5. 插入 与BST大致相同,只是在把val插入到左子树或右子树时,要根据dat来维护Treap,即通过左旋或右旋调整使得堆性质成立 ...
分类:
其他好文 时间:
2019-08-08 20:59:36
阅读次数:
91
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6, ...
分类:
编程语言 时间:
2019-08-07 22:58:48
阅读次数:
213
时间复杂度最坏n2,平均nlogn 解释:遍历一次O(n),快排采用分治法来遍历,看成二叉树,那么遍历的次数跟他的深度有关系,n个节点,那么深度至少是log(n+1),所以平均nlogn;二叉树最大深度那就是N了,所以最坏时间复杂度n2。 边界问题分析(第一个while循环条件i<=j): 当i=j ...
分类:
编程语言 时间:
2019-08-03 14:31:27
阅读次数:
122
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例?1: 输入: 2 / \ 1 3 输出: true 示例?2: 输入: 5 / \ 1 ...
分类:
其他好文 时间:
2019-08-02 21:06:38
阅读次数:
153
leetcode 235 二叉搜索树最近公共祖先 题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的 ...
分类:
其他好文 时间:
2019-07-26 01:58:42
阅读次数:
118
题目链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/submissions/ 解题思路: 如果p和q都小于root,去左边找就行。 如果p和q在两侧的,直接就是root,这个可以通过 ...
分类:
其他好文 时间:
2019-07-24 20:57:30
阅读次数:
83
主要代码其实很少,主要是对各种情况的判断。在做题的时候一定要考虑到各种情况的非法输入。 1.前面的空格需要跳过 2.判断数字的正负号并记录 3.如果有非法输入例如字母和其他非数字和正负号的字符,退出返回0 4.返回的是一个数字,所以一定要考虑数字的边界问题 5.对于各种情况考虑到之后最好再加一个无条 ...
分类:
其他好文 时间:
2019-07-24 13:35:52
阅读次数:
67
LeetCode 98. Validate Binary Search Tree(判断是否是二叉搜索树) 思路1:对树进行深度优先遍历,遍历到某个节点是判断该节点的左子树是否为二叉搜索树,右子树是否为二叉搜索树,左子树的最大值是否小于当前节点的值,右子树的最小值是否大于当前节点的值。 思路2:对树进 ...
分类:
其他好文 时间:
2019-07-22 18:23:12
阅读次数:
81
BLO 关键字:tarjan 树上dp 原图有环,然可利用tarjan深度优先搜索树,假设去掉的点是u,考虑三个方向的转移 1 #include<cstdio> 2 #include<queue> 3 #include<cstring> 4 #include<algorithm> 5 #define ...
分类:
其他好文 时间:
2019-07-14 12:54:53
阅读次数:
74