树与二叉树 二叉树 基本概念: 树是n(n>=0)个结点的有限集合,n=0时,称为空树;任意非空树满足: 1)有且仅有一个特定的称为根的结点 2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集合,其中每一个集合本身又是一棵树,称为根结点的子树 (n个结点的树只有n-1条边) 树的性质: 1 ...
分类:
其他好文 时间:
2020-05-24 23:47:32
阅读次数:
213
单循环链表与单链表的不同是,单循环链表尾结点的next指向第一个结点(或头结点) 代码: 无头结点: public class SingleCircleLinkedList<E> extends AbstractList<E> { private Node<E> first; private sta ...
分类:
编程语言 时间:
2020-05-24 23:46:44
阅读次数:
71
1、堆的概念 堆排序依赖的数据结构是完全二叉树,要想是完全二叉树,前提必须是二叉树(废话),二叉树就要求父亲结点至多有两个孩子,即可以有一个、两个或者没有孩子。 完全二叉树则是在二叉树的基础上多了一些限制条件,那就是: 1、要么二叉树的每一层都是满的,即除叶子结点之外,其他结点都必须拥有左右孩子; ...
分类:
编程语言 时间:
2020-05-24 21:10:32
阅读次数:
66
树与图的存储 树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。 (1) 邻接矩阵:g[a][b] 存储边a->b (2) 邻接表: // 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点 ...
分类:
其他好文 时间:
2020-05-24 14:06:38
阅读次数:
62
# 树的单个结点 class Node: def __init__(self,elem): # 结点数据 self.elem = elem # 左子树和右子树 self.lchild = None self.rchild = None # 二叉树的实现 class my_tree: # 初始化空树 ...
分类:
其他好文 时间:
2020-05-24 13:46:26
阅读次数:
51
一、本章学习内容小结:本章学习了新的数据结构--树,与前面的学习不同的是,树是一种非线性结构,树只有一个根结点,其子树本身也是一棵树,所以其定义是递归定义。本章还学习了二叉树和哈夫曼树。 二叉树:结点的度不超过2的树,其中完全二叉树是每个结点都与深度为k的满二叉树编号相同。遍历二叉树是对数的基本操作 ...
分类:
其他好文 时间:
2020-05-24 13:21:19
阅读次数:
69
什么是堆 堆是一个近似 完全二叉树 的结构, 并同时满足 堆积的性质 :即子结点的键值或索引总是小于(或者大于)它的父节点。 什么是堆排序 堆排序 (英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。 实现大顶堆 首先我们需要找到所有的非叶子结点,通过完全二叉树的性质我们知道 若父 ...
分类:
编程语言 时间:
2020-05-23 18:40:01
阅读次数:
65
假设链路传输不出错,结点也不会发生故障, 试问TCP的可靠传输是否多余? TCP的可靠传输体现在传输的可靠(建立连接)、有序、无丢失和不重复问题。 即使链路传输不出错,结点也没有故障,但是 1)失序问题,每个IP数据报独立的选择路由,最终到达主机就有可能失序 2)丢失问题,某个数据可能路由选择错误, ...
分类:
其他好文 时间:
2020-05-23 16:35:52
阅读次数:
43
"POJ 1797 Heavy Transportation" 题意:给一个无向图,找出在所有从结点$1$到结点$n$的路径中,最小边的权值最大的那一条。输出这个权值。 思路: 方法有两种:一是最短路变形,二是最大生成树。 这里先给出最大生成树的代码。最大生成树可以保证生成“最小边的权值最大的那一条 ...
分类:
其他好文 时间:
2020-05-23 13:22:58
阅读次数:
49
线段树 线段树的根节点是整段区间,其它结点是由区间不断二分得到的子区间,其中叶子结点是区间的每个单独的元素。 存储 这里使用结构体存线段树。 建树 这里默认我们要求的是区间和,故结点值均为区间和。 可以视情况改变结点值的含义。 懒标记 如果每次对叶子结点的值进行修改时,总是一并将受其影响的其他父结点 ...
分类:
编程语言 时间:
2020-05-22 19:29:31
阅读次数:
47