随笔分类 -  数据结构

摘要:二叉搜索树 建树 删除节点,三种情况,递归处理。左右子树都存在,两种方法,一种找到左子树最大节点,赋值后递归删除。找右子树最小同理 阅读全文
posted @ 2018-09-11 21:02 demianzhang 阅读(1053) 评论(0) 推荐(0)
摘要:伊卡洛斯很爱吃西瓜。一次,他来到一个西瓜摊旁,发现水果摊有N个西瓜,西瓜有红色、黄色、绿色、蓝色……等等数不清的颜色。 伊卡洛斯很想知道知道一些信息,便于老板交谈了起来。 当老板的话的第一个字符为”A”时,老板会告诉伊卡洛斯一些信息,格式如下: A x y 1 这句话表示第x个西瓜和第y个西瓜是同一 阅读全文
posted @ 2018-06-14 20:20 demianzhang 阅读(459) 评论(0) 推荐(0)
摘要:树结点结构体: 因为在后序遍历中,要保证左孩子和右孩子都已被访问并且左孩子在右孩子前访问才能访问根结点 第一种: 对于任一结点P,将其入栈,然后沿其左子树一直往下搜索,直到搜索到没有左孩子的结点,此时该结点出现在栈顶,但是此时不能将其出栈并访问,因此其右孩子还为被访问。所以接下来按照相同的规则对其右 阅读全文
posted @ 2017-12-26 14:42 demianzhang 阅读(5739) 评论(1) 推荐(1)
摘要:对英文文本的字母进行huffman编码,heapq优先队列构建huffman树 python huffman.py source.txt result.txt 1 import sys 2 import heapq 3 import collections 4 5 class Node(object): 6 def __init__(self,value = Non... 阅读全文
posted @ 2017-11-23 14:31 demianzhang 阅读(1071) 评论(0) 推荐(0)
摘要:题意: 给你一颗N个节点的树,节点编号1到N。1总是节点的根。现在有两种操作: 现在给一系列操作,求出所有Q操作结果的和。 思路: 最坏情况下为整棵树成为一条链,单纯使用并查集(无压缩)查询复杂度最坏1e10。单纯使用并查集也能过。 正解应该是将查询存下来,存下每次Q操作的查询时间和查询结点,用qt 阅读全文
posted @ 2017-08-17 20:59 demianzhang 阅读(553) 评论(0) 推荐(1)
摘要:题意:有N名来自两个帮派的坏蛋,已知一些坏蛋两两不属于同一帮派,求判断给定两个坏蛋是否属于同一帮派。 思路: 解法一: 编号划分 定义并查集为:并查集里的元素i-x表示i属于帮派x,同一个并查集的元素同时成立 可见所有元素个数为2 * N,如果i表示属于帮派A,那么i + N表示属于帮派B,每次输入 阅读全文
posted @ 2017-08-17 13:39 demianzhang 阅读(227) 评论(0) 推荐(0)
摘要:题意: 有n台损坏的电脑,现要将其逐台修复,且使其相互恢复通信功能。若两台电脑能相互通信,则有两种情况,一是他们之间的距离小于d,二是他们可以借助都可到达的第三台已修复的电脑。给出所有电脑的坐标位置,对其进行两种可能的操作,O x表示修复第x台,S x y表示判断x y之间能否通信,若能输出SUCC 阅读全文
posted @ 2017-08-16 22:25 demianzhang 阅读(392) 评论(0) 推荐(0)
摘要:题意:从C头奶牛中招收N(奇数)头。它们分别得分score_i,需要资助学费aid_i。希望新生所需资助不超过F,同时得分中位数最高。求此中位数。 思路: 先将奶牛排序,考虑每个奶牛作为中位数时,比它分数低(前面的)的那群牛的学费总和lower_i,后面的总和upper_i。然后从分数高往分数低扫描 阅读全文
posted @ 2017-08-16 21:42 demianzhang 阅读(297) 评论(0) 推荐(0)
摘要:题意:奶牛美容:有C头奶牛日光浴,每头奶牛分别需要minSPF_i和maxSPF_i单位强度之间的阳光。现有L种防晒霜,分别能使阳光强度稳定为SPF_i,其瓶数为cover_i。求最多满足多少头奶牛 思路: 将奶牛按照阳光强度的最小值从小到大排序。将防晒霜也按照能固定的阳光强度从小到大排序。 从最小 阅读全文
posted @ 2017-08-16 15:19 demianzhang 阅读(225) 评论(0) 推荐(0)
摘要:题意:科学家发现一种奇怪的东西,他们有重量weight,如果他们碰在一起,总重变成2*sqrt(m1*m2)。要求出最终的重量的最小值。 思路:每次选取质量m最大的两个stripy进行碰撞结合,能够得到最小的质量。所有只要维护一个优先队列就可以了 #include <iostream> #inclu 阅读全文
posted @ 2017-08-07 00:42 demianzhang 阅读(323) 评论(0) 推荐(0)
摘要:转自 http://www.jianshu.com/p/e37495f72cf6 hihocoder 1342 解释:题目描述了一种用ASCII码绘制的满二叉树,然后将树的根设置在一个特殊坐标轴的原点(0,0),坐标轴x向下为正向,y向右是正向。树的每个树枝与节点都占用1*1的大小。现在需要求在坐标 阅读全文
posted @ 2017-03-10 23:49 demianzhang 阅读(416) 评论(0) 推荐(0)
摘要:思路: 所包含的运算符有‘+’,‘-’,‘*’,‘/’,‘(’,‘)’。 (1)建立两个栈,一个用来存储操作数,另一个用来存储运算符, 开始时在运算符栈中先压入‘/0’,一个表达式的结束符。 (2)然后从左至右依次读取表达式中的各个符号(操作数或者运算符); (3)如果读到的是操作数直接存入操作数栈 阅读全文
posted @ 2016-11-26 16:51 demianzhang 阅读(7722) 评论(0) 推荐(0)