数据结构
文章平均质量分 59
4559
这个作者很懒,什么都没留下…
展开
-
二叉树的基本操作
#include "queue.h" BTNode* BuyBTNode(BTDataType x){ BTNode* root = (BTNode*)malloc(sizeof(BTNode)); root->_data = x; root->_left = NULL; root->_right = NULL; return root;}// 创...原创 2018-08-12 19:37:18 · 174 阅读 · 0 评论 -
布隆过滤器和海量数据面试题
哈希切割topK问题给一个超过100G大小的logfile,log中存着ip地址,设计算法找到出现次数最多的ip地址,与上题条件相同,如何找到topK的ip?如何直接用Linux系统命令实现?(1)topK的ip思路:使用堆(2)寻找次数最多思路:分割成多个文件,分别多每个文件进行统计,统计方式用hash,ip为key,次数为value,然后就可以统计出每个ip出现的次数,然后...原创 2018-09-23 10:10:25 · 988 阅读 · 0 评论 -
十大经典排序算法
转载自 https://www.cnblogs.com/onepixel/articles/7674659.html十大经典排序算法(动图演示)0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间...转载 2018-09-18 00:11:01 · 311 阅读 · 0 评论 -
哈希的基本操作
前言哈希哈希冲突闭散列开散列头文件定义代码各个功能解析初始化插入查找删除完整代码前言理想的搜索方式:可以不经过任何比较,一次直接从表中得到要搜索的元素,构造一种结构,通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么查找时就能通过函数一下找到该元素哈希1.本质上是一个数组,通过哈希函数使元素关键码和元素存储位置有...原创 2018-08-30 13:27:54 · 960 阅读 · 0 评论 -
二叉搜索树的基本操作(插入,删除)
前言基本操作插入删除前言二叉搜索树是什么 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。基本操作插入...原创 2018-08-24 16:01:30 · 329 阅读 · 0 评论 -
堆是什么&堆排序
堆是一个二叉树大堆的定义小堆的定义堆的初始化思路:代码堆排序效率:关于堆的接口堆插入思路:代码:堆的Pop思路:代码:堆排序思路代码堆是一个二叉树堆是一个静态的完全二叉树 int array[]={53,17,78,9,45,65,87,23,31}; 物理上是一个数组逻辑上是一个二叉...原创 2018-08-22 20:54:59 · 439 阅读 · 0 评论 -
非递归方法遍历二叉树
[TOC] 前序遍历思路: 前序遍历由图示是先一里路向左全递归压栈并且边压栈边打印,直到左指针为空,然后得到栈顶指针,并出栈,找该栈顶结点的右结点,如果不为空,同样的一路左递归压栈,边压栈边打印,直到左指针为空,然后重复,最后栈为空停止。中序遍历思路: 和前序遍历不一样的地方只是打印的地方不一样,一个是顺着一步一步入栈的时候打印,一个是出栈前打印,这样会导致结点数据和结点左指...原创 2018-08-13 01:07:54 · 234 阅读 · 0 评论 -
栈和队列的迷宫问题
前言一说到走迷宫,计算机走出迷宫的方式其实是最蠢却有效的方式,即遍历所有的路径,然后找到出口,当我们遍历每一个坐标点时候,如果利用栈去保存每个有效的点,当我们找到出口时,栈中保存的就是我们从起点到终点的路径。实现方法计算机要走出迷宫,我们需要用到递归性质迷宫图0代表墙壁 1代表可以通过 什么样的递归性质?如果迷宫没有环: 1.从起点开始向四周走2.周围...原创 2018-08-13 23:51:05 · 621 阅读 · 0 评论 -
判断一个二叉树是否为完全二叉树
前言首先得知道什么是完全二叉树一个N层的二叉树,它的前N-1层全是满的,并且它的最后一层的结点从左到右连续则它就是完全二叉树图例这是完全二叉树这也是完全二叉树这也是完全二叉树这不是完全二叉树,因为最后一层的结点不连续题目分析根据二叉树的性质,如果学过层序遍历的话,我们很容易可以想到,利用队列先进先出的特点,对二叉树一层一层...原创 2018-08-21 16:27:48 · 458 阅读 · 0 评论 -
求二叉树的镜像(非递归&递归)
前言什么是二叉树镜像 其实就是左右子树对调一下就是二叉树的镜像了比如下面两图就是互为镜像的二叉树递归方法方法分析采用分置的思想,大事化小事,把交换左右子树地址的事交给每一个栈帧完成。完整代码//二叉树的镜像 递归方法void BTreeMirrorR(BTNode* root){ BTNode* tmp; if (root ==...原创 2018-08-21 17:08:43 · 382 阅读 · 0 评论 -
实现栈和队列
1:实现栈和队列 typedef int DataType; typedef struct Stack { DataType* _array; size_t _top; //栈顶 size_t _end; }Stack; // 栈的实现接口 void StackInit(Stack* s); void StackPush(Stack* s, DataType x); voi...原创 2018-08-09 00:08:50 · 179 阅读 · 0 评论