二分搜索树又名有序二叉查找树,它有一个特点是左子树的节点值要小于父节点值,右子树的节点值要大于父节点值。基于这样的特点,我们在查找某个节点的时候,可以采取二分查找的思想快速找到这个节点,时间复杂度期望值是为O(log n),但是它有最坏的的情况下。 例如,输入数组[9,7,5,3,1],如果要满足二 ...
分类:
其他好文 时间:
2020-01-27 12:36:55
阅读次数:
77
学习过2 3树之后就知道应怎样去理解红黑树了,如果直接看「算法导论」里的红黑树的性质,是看不出所以然。我们也看看一颗二分搜索树满足红黑的性质: 1.每个节点或是红色的,或是黑色的; 2.根节点是黑色的; 3.每个叶子节点(NIL)是黑色的; 4.如果一个节点是红色的,则它的两个子节点都是黑色的; 5 ...
分类:
其他好文 时间:
2020-01-26 16:04:47
阅读次数:
92
画了一系列树的动画,从二分搜索树,到AVL树,再到2 3树,再到基于2 3树的红黑树,都可以发现这些树都跟二叉查找树很像啊。 嘿嘿!二分搜索树就是二叉查找树;AVL树也是一颗二分搜索树,只多了高度差的限制;2 3树虽满足二分搜索树的性质,但不是一颗二分搜索树,2 3树由2 节点和3 节点组成的,满足 ...
分类:
其他好文 时间:
2020-01-26 14:34:42
阅读次数:
96
观点1 我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。 比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果 我们选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。 ...
分类:
编程语言 时间:
2020-01-24 21:16:44
阅读次数:
86
今天分享一个LeetCode题,题号是1038,标题是:从二分搜索树到更大和数。 题目描述 给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件: 1)节点的左子树仅包含键小 ...
分类:
其他好文 时间:
2020-01-23 14:09:38
阅读次数:
77
二分搜索树是为了快速查找而生,它是一颗二叉树,每一个节点只有一个元素(值或键值对),左子树所有节点的值均小于父节点的值,右子树所有的值均大于父节点的值,左右子树也是一颗二分搜索树,而且没有键值相等的节点。它的查找、插入和删除的时间复杂度都与树高成比例,期望值是O(log n)。 但是插入数组如[], ...
分类:
其他好文 时间:
2020-01-23 14:00:42
阅读次数:
81
二分搜索树是二叉树的一种。 二叉树就是有左右节点,有唯一根节点的树类数据结构。二叉树具有天然递归结构,每个父亲节点的左右子树也是二叉树 class Node{ E e; Node left; Node right; } 上图是一个满二分搜索树,但用的时候不一定是满的, 符合条件就行。所以存储的元素必 ...
分类:
其他好文 时间:
2020-01-20 09:39:54
阅读次数:
69
一、字符串查找:1、在Word、 IntelliJ IDEA、Codeblocks等编辑器中都有字符串查找功能。2、字符串查找算法是一种搜索算法,目的是在一个长的字符串中找出是否包含某个子字符串。 二、字符串匹配:1、一个字符串是一个定义在有限字母表上的字符序列。例如,ATCTAGAGA是字母表 E ...
分类:
编程语言 时间:
2020-01-15 13:51:15
阅读次数:
93
一、字符串查找:1、在Word、 IntelliJ IDEA、Codeblocks等编辑器中都有字符串查找功能。2、字符串查找算法是一种搜索算法,目的是在一个长的字符串中找出是否包含某个子字符串。 二、字符串匹配:1、一个字符串是一个定义在有限字母表上的字符序列。例如,ATCTAGAGA是字母表 E ...
分类:
编程语言 时间:
2020-01-14 23:55:58
阅读次数:
152
9.算法之顺序、二分、hash查找 一.查找/搜索 我们现在把注意力转向计算中经常出现的一些问题,即搜索或查找的问题。搜索是在元素集合中查找特定元素的算法过程。搜索通常对于元素是否存在返回 True 或 False。有时它可能返回元素被找到的地方。我们在这里将仅关注成员是否存在这个问题。 在 Pyt ...
分类:
编程语言 时间:
2020-01-12 16:41:35
阅读次数:
83