
数据结构
hezuo1181
???????
展开
-
数据结构—二叉查找树
参考:http://hxraid.iteye.com/blog/609312 删除操作: 如果二叉查找树中需要删除的结点左、右子树都存在,则删除的时候需要改变一些子树结构,但所需要付出的代价很小。 查找某个结点 插入一个结点 删除某个结点 中序遍历 递归版本 非递归版本(利用栈) 参考博客:https://blog.youkuaiyun.com/jun...原创 2018-09-01 17:35:19 · 189 阅读 · 0 评论 -
数据结构—二叉平衡树 红黑树
平衡二叉树(AVL) 平衡二叉查找树,又称 AVL树。 它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它 的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子 ) 不超过1。 也就是说AVL树每个节点的平衡因子只可能是-1、0和1(左子树高度减去右子树高度)。 那么如何是二叉查找树在添加数据的同时保持平衡呢?基本思想就是:当在二叉排序树中插入一个节...转载 2018-10-07 02:49:27 · 424 阅读 · 0 评论 -
数据结构-B树,B+树
转载https://blog.youkuaiyun.com/whoamiyang/article/details/51926985 B/B+树 注意B-树就是B树,-只是一个符号. 简介 B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B/B+树的高度远远小于红黑树的高度(在下面B/B+树的性能分析中会提到...转载 2018-09-01 22:42:52 · 260 阅读 · 0 评论 -
剑指offer-第一部分
01 二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法:利用左下角的数a作为起点,(因为如果大于a的话就往右走,如果小于a的话,就往上走)一直这样判断,知道行数=1或列数达到最大值。 代码: public ...原创 2018-09-02 01:38:23 · 379 阅读 · 0 评论 -
数据结构 排序算法
越努力越幸运! 转载自:https://www.javazhiyin.com/13397.html 稳定排序与不稳定排序 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法 直接插入排序 直接插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看...转载 2018-10-07 14:03:28 · 804 阅读 · 0 评论 -
数据结构 二叉树
越努力越幸运! 转载自:https://www.javazhiyin.com/12976.html 实现了二叉树的深度和广度优先遍历 深度优先遍历: 对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。而二叉树的深度优先遍历分为先序遍历,中序遍历和后续遍历。 先序遍历:先访问根,在访问左子树,最后访问右子树,总结就是“根左右”; 中序遍历:先访问左子树,再访问...转载 2018-10-08 00:06:37 · 217 阅读 · 0 评论 -
剑指offer-第二部分
29.数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题:因为如果数组中出现了一个数出现的次数超过了数组长度的一半的话,则那个数字一定是要在数组的中间出现的。 所以可...原创 2018-09-06 00:30:11 · 188 阅读 · 0 评论