前言 上一篇文章只是简单地认识下二叉树,并未提到它的缺陷。数据结构的好坏取决于时间复杂度,由于每次操作(插入、删除、查找)需要与节点比较来选择进入到左子树还是右子树,也就是说每次比较都会排除一些可能(选择左右其中一侧),当然了这是对于随机均匀分布的二叉树来说,它的时间复杂度是O(log2n),但是对 ...
分类:
其他好文 时间:
2020-12-25 12:14:00
阅读次数:
0
基于数组的ArrayList ArrayList是Java中我们最常使用的List接口的实现类,其是内部就是通过维护一个无序数组来实现的。因此ArrayList具备无须数组拥有的所有优点和缺点: 操作 时间复杂度 插入 O(1) 删除 O(N) 查找 O(N) 1、注意: 1、ArrayList总是 ...
分类:
其他好文 时间:
2020-09-18 02:00:11
阅读次数:
26
二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树前、中、后序以及按层遍历 二叉查找树的特性,其任一节点,该节点的左子树上的所有值,都比该节点小,该节点的右子树上的所有值,都比该节点大。 查找操作,主要分以下几种情况 如果查找value ...
分类:
其他好文 时间:
2020-07-21 01:26:46
阅读次数:
94
题意是,输入一个二维数组,从数组左上角开始,沿着顺时针慢慢地“遍历”每一个元素且每一个元素只遍历一次, 在一个新的一维数组中记录遍历的顺序,最终的返回值就是这个数组。 思路:可以考虑用方向来模拟“一个指针的移动”,指针指向的元素如果合法(不越界且未被访问过),就将这个元素压入结果数组。 这里的核心是 ...
分类:
其他好文 时间:
2020-06-26 20:00:14
阅读次数:
50
1 #include <stdio.h> 2 #include <malloc.h> 3 typedef struct lianbiao *ptr; 4 struct lianbiao 5 { 6 int data; 7 ptr next; 8 }; 9 10 int main(void) 11 { ...
分类:
其他好文 时间:
2020-06-14 01:00:09
阅读次数:
64
#include <stdio.h> #include <malloc.h> typedef struct lianbiao *ptr; struct lianbiao { int data; ptr next; }; int main(void) { ptr create(); void out( ...
分类:
其他好文 时间:
2020-06-12 20:34:41
阅读次数:
70
二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O(logn)。 不过,二叉查找树在频繁的动态更新过程中,可能会出现数的高度远大于 log2^n 的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复 ...
分类:
编程语言 时间:
2020-04-23 00:21:58
阅读次数:
86
1. 简介 散列表的实现叫散列hashing,散列用于以常数平均时间执行 插入、删除、查找,不支持排序、findMin、findMax。 查找关键字不需要 比较 在一个记录的存储位置和它的关键字之间建立映射关系:key--f(key) 这个关系就是散列函数/哈希函数。将一些记录存储在一块 连续 的存 ...
分类:
编程语言 时间:
2020-02-20 00:17:44
阅读次数:
223
Binary Search Trees: BST树里首先讲了插入删除查找等操作,比较常规。查找:最差O(n),最好O(logn),平均O(logn);插入:成功的插入平均O(logn),最差也是O(n);删除里有三种情况,对于一次成功的删除,待删除的结点v的子结点个数只可能是0、1、2,如果是0的话 ...
分类:
其他好文 时间:
2020-02-01 16:03:31
阅读次数:
70
题目描述 用C++语言和类实现单链表,含头结点 属性包括:data数据域、next指针域 操作包括:插入、删除、查找 注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据 类定义参考 输入 n第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位 ...
分类:
其他好文 时间:
2020-01-10 20:22:07
阅读次数:
71