数据结构
tyisi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的非递归遍历实现
1. 二叉树的先序遍历 代码如下: public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<>(); if (root==null) return list; Stack<TreeN...原创 2018-03-16 11:01:16 · 194 阅读 · 0 评论 -
图的存储结构
1、邻接矩阵表示法 若G是一个具有n个顶点的无权图,G的邻接矩阵是具有如下性质的n×n矩阵A: 示例如下: 2、邻接表表示法 示例如下: 对于带权值的网图,可以在边表结点定义中再增加一个weight的数据域,存储权值信息即可。如下图所示: ...原创 2018-03-17 17:45:03 · 181 阅读 · 0 评论 -
图中涉及到的一些基本算法
1、最小生成树 在一个连通网的所有生成树中,各边的代价之和最小的那颗生成树称为该连通网的最小代价生成树,简称为最小生成树。 1.1 普里姆算法(加点法) 假设N=(V,{E})是连通网,TE为最小生成树中边的集合。 ①初始U={u0}(u0∈V),TE=∅; ②在所有u∈U,v∈V-U的边中选一条代价最小的边(u0,v0)并入集合TE,同时将v0并入U; ③重复②,直到U=V为止。 ...原创 2018-03-18 11:39:18 · 529 阅读 · 0 评论 -
几种特殊的二叉树
1、二叉排序树 二叉排序树或者是一棵空树,或者是具有如下性质的二叉树。 ①若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ②若它的右子树非空,则右子树上所有结点的值均大于(或大于等于)根结点的值。 ③它的左右子树也分别是二叉排序树。 2、平衡二叉排序树(AVL树) 一棵平衡二叉排序树或者是具有下列性质的二叉排序树: ①左子树与右子树的高度之差的绝对值小于等于1; ②...原创 2018-03-19 17:25:42 · 1802 阅读 · 0 评论 -
二叉排序树的删除
删除操作首先查找要删除的结点,看是否在二叉排序树中,若不在则不做任何操作;否则,假设要删除的结点为p,结点p的双亲结点为f,并假设结点p是结点f的左孩子(右孩子的情况类似)。下面分三种情况讨论: 1、若p为叶子结点,则可直接将其删除; 2、若p结点只有左子树或只有右子树,直接改为其双亲结点f的左子树; 3、若p既有左子树,又有右子树,此时有以下两种处理方法: 方法一:首先找到p结点在中序序...原创 2018-08-11 10:31:08 · 1928 阅读 · 0 评论 -
平衡二叉排序树的插入
1、LL型 2、LR型 3、RL型 4、RR型原创 2018-08-11 19:32:52 · 488 阅读 · 0 评论 -
红黑树
红黑树 红黑树,本质上来说就是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。 但它是如何保证一棵n个结点的红黑树的高度始终保持在h = logn的呢?这就引出了红黑树的5条性质: 1)每个结点要么是红的,要么是黑的。 2)根结点是黑的。 3)每个叶结点(叶结点即指树尾端NIL...转载 2018-08-13 21:53:04 · 218 阅读 · 0 评论
分享