前言 在 "【算法04】树与二叉树" 中,已经介绍过了关于树的一些基本概念以及二叉树的前中后序遍历,而这篇文章将是在二叉树的基础上来展开讲解的二叉搜索树,也就是说二叉搜索树建立在树的基础之上。至于博主为何要花一整篇文章来讲这个二叉搜索树呢?原因很简单,红 黑树是基于二叉搜索树的,如果对二叉搜索树不了 ...
分类:
其他好文 时间:
2019-12-16 09:18:32
阅读次数:
88
链式前向星法存的带边权的图,(尤其在多组数据时)时间效率比vector略高且节省空间,缺点是不容易对一个点的出边进行排序去重,当平行边无所谓时选择这个方法是非常明智的。链式前向星法存图的最大的问题是要记得给反向边预留空间。 图的存储和遍历,在图中搜索树的父子关系其实一般不是很重要。注意下面的代码是 ...
分类:
其他好文 时间:
2019-12-15 21:43:10
阅读次数:
102
二分搜索树具有以下特点: 1 二分搜索树是一颗二叉树 2 二分搜索树每个节点的左子树的值都小于该节点的值,每个节点右子树的值都大于该节点的值 3 任意一个节点的每棵子树都满足二分搜索树的定义 基于第二点我们的需要插入树的元素实现Comparable接口,下面实现二分搜索树的原型,这个类具有二分搜索树 ...
分类:
其他好文 时间:
2019-12-11 23:15:55
阅读次数:
82
一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: root = [5,3,6,2,4,null,7] key = 3 5 / \ 3 6 / \ \ 2 4 7 给定需要删除的节点值是 3,所以我们首 ...
分类:
其他好文 时间:
2019-12-11 14:44:44
阅读次数:
100
数据结构 树(上) 一、概述 主要内容包含树的基本概念、二叉树(平衡二叉树、完全二叉树、满二叉树)、搜索树(二叉搜索树、平衡搜索树、AVL树、伸展树、(2,4)树、红黑树)、(a,b)树、B树等实际运用的树数据结构 二、基本知识(树的定义和属性) 1、树(非线性数据结构)运用于一些算法实现的效率会比 ...
分类:
其他好文 时间:
2019-12-08 11:01:30
阅读次数:
119
数据结构 树(下) 一、概述 AVL树、伸展树、红黑树搜索树算法保证最坏情况或者一系列操作情况下,搜索、插入和删除的操作的时间复杂度是O(logn)。本文主要内容包含:平衡搜索树中的AVL树、伸展树、(2,4)树、红黑树 和(a,b)树、B树等实际运用的树数据结构。 二叉搜索树的删除 二、AVL树 ...
分类:
其他好文 时间:
2019-12-08 10:56:38
阅读次数:
97
南宁SEO:简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常见的数据结果有以下三种:哈希表、有序数组和搜索树。 哈希表是一种以键值存储数据的结构,我们只要输入待查找的值 ...
分类:
其他好文 时间:
2019-12-07 23:39:06
阅读次数:
212
import re """ 使用match方法进行匹配 result = re.match(正则表达式,要匹配的字符串) 如果match匹配到数据的话,就可以使用group方法提取数据 注: 若字符串匹配正则表达式,则match方法返回匹配对象(Match Object), 否则返回None(不是空 ...
分类:
其他好文 时间:
2019-12-06 23:37:53
阅读次数:
107
1. 常见搜索方法 顺序查找 最优时间复杂度:O(1) 最坏时间复杂度:O(n) 二分法 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 二叉树 若是“二叉搜索树” 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 哈希 时间复杂度:O(1) 2. 二分查找的代码实现 顺序查找,就 ...
分类:
其他好文 时间:
2019-12-05 21:46:52
阅读次数:
112
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6, ...
分类:
其他好文 时间:
2019-12-02 20:43:24
阅读次数:
94