创建一个二叉搜索树,并且从创建的二叉搜索树中查找是否存在某个值 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, init ...
分类:
编程语言 时间:
2020-06-27 13:30:05
阅读次数:
73
介绍 treap是tree和heap的组合词,说明这种数据结构有树的特点又有堆的特点。本质是一颗二叉搜索树。 treap的结点除了key关键字外还有个priority关键字。treap除了要保证key满足二叉搜索树性质,还要保证当前priority大于等于两个子节点的priority(即堆的性质)。 ...
分类:
其他好文 时间:
2020-06-27 13:10:38
阅读次数:
52
题目链接 1038. 从二叉搜索树到更大和树 题目分析 题目要求我们把大于等于当前结点的值累加起来然后替换掉该结点原来的值。考虑到这是一棵二叉搜索树,我们从右子树开始的中序遍历就是倒序数组。 我们需要一个pre指针指向前一个结点,就可以获得比你大的结点值之和,再加上当前结点的值就可以满足题目。 代码 ...
分类:
其他好文 时间:
2020-06-26 22:10:05
阅读次数:
67
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1: 输入: 2 / \ 1 3输出: true示例 2: 输入: 5 / \ 1 4 / \ ...
分类:
其他好文 时间:
2020-06-24 23:42:41
阅读次数:
52
173. 二叉搜索树迭代器 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 ...
分类:
其他好文 时间:
2020-06-24 15:43:46
阅读次数:
37
中序遍历排序 思路: ①按中序遍历树 ②确定交换的元素x,y ③再次遍历树,改变对应节点的值 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right ...
分类:
其他好文 时间:
2020-06-24 12:15:25
阅读次数:
53
—》2020 年联考 A 卷 DAY1: T1:理清模型后发现数据有序维护起来会非常方便,就想到二叉搜索树。两种战士将合适温度“夹在中间”,就想到二分。正好前几天刚学了平衡树,就用它做了。但是很卡常,可惜没想到树状数组(其实是不会)。考试前一天晚上被蚊子扰醒了4次,早上脑子也是很不好,写这一道题就用 ...
分类:
其他好文 时间:
2020-06-21 19:44:16
阅读次数:
71
递归 思路: 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = l ...
分类:
其他好文 时间:
2020-06-21 15:46:28
阅读次数:
40
申明:之前是因为线段树一点都不懂才学字典树的,现在学线段树 所以这篇文章在前大部分时间都是写给我自己看的——给一个初学数据结构的蒟蒻我学的 首先,看看度娘是怎么定义线段树的 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点 使用线段树可以快速 ...
分类:
其他好文 时间:
2020-06-21 00:13:35
阅读次数:
59
构造一颗二叉排序树(也叫二叉搜索树,BST,Binary Search Tree)十分简单。一般来讲,大于根节点的放在根节点的右子树上,小于根节点的放在根节点的左子树上(如果等于根节点,则可视情况而定),如果写程序的话,可以采用递归的方式,而且由于不存在重叠子问题的情况,因此递归的性能已经足够好(不... ...
分类:
编程语言 时间:
2020-06-21 00:01:36
阅读次数:
97