
数据结构
yiichan
这个作者很懒,什么都没留下…
展开
-
1119 Pre- and Post-order Traversals (30 分)
1119 Pre- and Post-order Traversals (30分)Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder tra...原创 2019-11-01 07:43:56 · 202 阅读 · 0 评论 -
二叉树先序、中序、后序遍历的非递归算法 非递归先序、中序、后序遍历二叉树
//非递归实现中序遍历stack<BiTree*> bs;void preOrderTraversal(BiTree* t) { BiTree *p=t; while (p||!bs.empty()) { if (p) { bs.push(p); p=p->lc; } else { p=bs.top(); bs.pop(); pr...原创 2019-08-07 22:01:15 · 780 阅读 · 0 评论 -
16节点 二叉树测试样例
如题。如图。这阵子写了不少树,但是苦于测试样例不足,不知道正确与否,所以写了个长一些的测试样例。另一个样例在这里二叉树前序中序、后序中序建树,但是只有七个节点。下附节点数和前中后序遍历序列,可以用这个来测试我们的树算法。161 2 4 7 10 11 15 16 3 5 8 12 6 9 13 142 10 7 15 16 11 4 1 8 12 5 3 6 13 9 1410 16 ...原创 2019-08-09 19:51:43 · 756 阅读 · 0 评论 -
2020王道数据结构 P126 5 非递归算法求二叉树高
进行层序遍历,设置一last指针,保存当前层的最后元素,一旦队首元素等于这个元素,层数+1,last=队尾元素。层数+1:因为到了每一层的最后一个元素,该层将结束,自然需要+1last=队尾元素:层序遍历时,此时的队尾元素正好是下一层的最后一个元素,正好符合last的定义。代码如下#include <bits/stdc++.h>#define N 1005#define...原创 2019-08-09 21:47:42 · 473 阅读 · 0 评论 -
二叉树的前序中序、后序中序建树(最简单的算法) 二叉链表结构
去年我做的时候总结过,因为没有发博客,所以又忘了,到网上找,这一个短短的算法都写的特别长,要么建了很多乌七八糟的分支,没必要。我重新翻了翻纸质版笔记,找到了原先的简单算法,在这里发个博客记一下。其实这两种思路很像,都是设置一个返回值为树节点指针的三参数函数,三个参数分别为树长、前序/后序遍历数组、中序遍历数组。首先我设计了下面这个样例,贴上数据和树图71 2 4 3 5 7 64 2 1...原创 2019-08-07 21:41:37 · 1197 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30 分)
1119 Pre- and Post-order Traversals (30分)Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder tra...原创 2019-08-14 19:16:01 · 313 阅读 · 0 评论 -
1127 ZigZagging on a Tree (30 分)
1127 ZigZagging on a Tree (30 分)Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal s...原创 2019-08-14 20:21:52 · 794 阅读 · 0 评论 -
10节点的二叉搜索树样例
下面是一个10节点的二叉搜索树样例,图是用visio画的第一行是节点数,第二行是先序,第三行是中序,最后一行是后序927 18 14 9 25 38 34 42 519 14 18 25 27 34 38 42 519 14 25 18 34 51 42 38 27...原创 2019-08-15 21:07:10 · 904 阅读 · 0 评论 -
打印u、v之间的所有简单路径
打印u、v之间的所有简单路径(邻接表实现)或许可以直接叫“打印u、v之间的所有路径”。这个算法用处很多,可以用来找满足条件的最优路径。为了效率的考虑,用了邻接表实现。#include <bits/stdc++.h>#define N 1005using namespace std;int used[N]; //标记该节点是否已被使用int path[N],d;vect...原创 2019-08-21 19:50:16 · 1046 阅读 · 0 评论 -
1138 Postorder Traversal (25 分)
1138 Postorder Traversal (25分)一道挺水的题,直接建树做是最简单的一种方法。代码比较好理解,我就不注释了。大意就是先按前序中序遍历结果建树,再进行后序遍历,后序输出第一个元素就结束程序运行。#include <bits/stdc++.h>#define N 50005using namespace std;int pre[N],in[N],cnt,...原创 2019-08-22 20:36:59 · 288 阅读 · 0 评论 -
由二叉树的中序和后序遍历得到先序序列
已知后序与中序输出先序原创 2019-08-04 20:06:02 · 949 阅读 · 0 评论 -
波兰表达式
波兰表达式标签(空格分隔): 算法竞赛2694:逆波兰表达式查看 提交 统计 提示 提问总时间限制: 1000ms 内存限制: 65536kB描述逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4。...原创 2018-04-04 21:32:45 · 1305 阅读 · 3 评论 -
POJ1328Radar Installation贪心+模拟队列+结构体排序+运算符重载+构造函数
POJ1328 Radar Installation 雷达安装 贪心+模拟队列+结构体排序+运算符重载+构造函数标签(空格分隔): 算法竞赛 C++ 算法这道题用到的是贪心算法,但是牵扯到了很多c++语法知识,所以我花了很长时间去学习相关语法。 题目中用到的语法有(包括但不限于):结构体的构造函数、运算符重载、结构体的排序函数、队列数据结构的模拟。 一开始我想的很简单,只需要每次考...原创 2018-03-03 15:00:39 · 239 阅读 · 0 评论 -
C++栈和队列
C++栈C++ STL中提供了栈(stack)的模板。 #include <stack> ... stack<type> stk;这就定义了一个栈stk。 栈支持下面的基本操作: stk.empty():stk为空则返回true,stk中存在元素则返回false stk.size():返回stk中的元素个数 s...原创 2018-02-23 23:30:53 · 344 阅读 · 0 评论 -
递归、堆和栈
递归、堆和栈标签(空格分隔): C 双学位高级语言程序设计 C函数递归的基本思想把规模较大的,较难解决的问题转化后才能规模较小的、易于解决的同类子问题。规模较小的子问题又转化为规模更小的子问题,且小到一定程度可以直接得出它的解(递归的基本条件,又名终止条件、出口),从而得到原始问题的解。数据结构中的“栈”后进先出,先进后出自顶向下移动指针由于这个结构,...原创 2018-03-03 15:11:08 · 886 阅读 · 0 评论 -
数据结构 线性表的唯一化算法
数据结构 线性表的唯一化算法标签(空格分隔): 算法 数据结构最近在看两个数据结构的网课,分别是学堂在线清华大学邓俊辉老师的和浙江大学陈越老师的,学到了很多有用的东西。比如下面这个线性表部分的算法(来自清华大学网课),对线性表进行唯一化处理的算法。对一个线性表(课程里面用vector指代),如果想要进行它的唯一化处理,就需要每一种元素仅仅保留一个。比如说{0,1,6,4,8,1,9...原创 2018-03-11 14:33:46 · 700 阅读 · 0 评论 -
数列求和的线性递归实现和二分递归实现
数列求和的线性递归实现和二分递归实现标签(空格分隔): 数据结构 算法以前上C程序设计时,递归就搞得糊里糊涂的,甚至连最简单的一个青蛙跳问题都做不出来。过了几个月了,因为学习数据结构重新学习了一下,归纳了一下如何写出一个递归程序。 递归分为好几种模式,这里先介绍线性递归和二分递归。以对一个整型数列求和为例。先上代码。假设最常用的设加和器循环累加的方法是朴素法。//递归实现数组...原创 2018-03-08 19:28:07 · 769 阅读 · 0 评论 -
02-线性结构4 Pop Sequence(25 分)
02-线性结构4 Pop Sequence(25 分)标签(空格分隔): 数据结构 C++02-线性结构4 Pop Sequence(25 分)Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are ...原创 2018-03-22 12:23:20 · 395 阅读 · 0 评论 -
02-线性结构3 Reversing Linked List(25 分)
02-线性结构3 Reversing Linked List(25 分)标签(空格分隔): 数据结构 算法竞赛02-线性结构3 Reversing Linked List(25 分)Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elemen...原创 2018-03-22 00:21:59 · 763 阅读 · 0 评论 -
两个有序链表序列的合并
两个有序链表序列的合并标签(空格分隔): 数据结构 算法竞赛02-线性结构1 两个有序链表序列的合并(15 分)本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node *PtrToNode;struct No...原创 2018-03-18 17:13:26 · 1372 阅读 · 3 评论 -
POJ 2386 Lake Counting DFS初步
POJ 2386 Lake Counting DFS初步标签(空格分隔): 算法 算法竞赛 Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 ...原创 2018-03-14 10:39:51 · 236 阅读 · 0 评论 -
Maximum Subsequence Sum 最大子列和算法拓展 浙大考研复试题
Maximum Subsequence Sum 最大子列和算法拓展 浙大考研复试题标签(空格分隔): 算法 数据结构 算法竞赛题目描述也很像最大子列和问题。给出一个整型数组,求他的最大子序列和,并且输出和最大时子序列的首元素和末元素。特别的,如果存在最大和相等的情况,就输出下标最小的那组;如果该数组全是负数,就输出0,以及首元素和末元素的值,相互之间用空格隔开。Sample Inp...原创 2018-03-12 20:12:49 · 784 阅读 · 0 评论 -
挑战程序设计竞赛 1.6.1 三角形 计算组合三角形的最大周长
挑战程序设计竞赛 1.6.1 三角形 计算组合三角形的最大周长标签(空格分隔): 挑战程序设计竞赛 算法竞赛题目很简单,就是输入一个数n,表示接下来输入一个有n个元素的数列,作为一些帮的长度,然后挑选其中的棒组成周长最长的三角形,输出这个最大周长。input52 3 4 5 10output12很简单的一道小题,但是用的方法很多样。书上给了全部遍历的方法,计算每...原创 2018-03-11 19:38:45 · 666 阅读 · 0 评论 -
最大子列和算法
最大子列和算法标签(空格分隔): 算法 数据结构PS:今天开始在中国大学MOOC上看浙江大学的数据结构课,难度确实很大,但是收获也很大。最大子列和算法被许多数据结构教材用来演示算法时间复杂度的分析,但是其中的后两种算法都不好懂,这里对所有算法都做一下说明。先上代码,里面囊括了所有的四种算法。代码虽是用C++写的,但是其中对C++特殊性质的应用只有一处,就是用max函数实现计算三...原创 2018-03-10 20:06:31 · 284 阅读 · 0 评论 -
数据溢出和数据精度
数据溢出和数据精度标签(空格分隔): C 双学位高级语言程序设计 C数据类型如果赋值运算左边的变量和右边的表达式的类型不一致,就可能发生数据溢出,造成数据精度的丢失。float类型精度是6~7位有效数字,double类型精度是16位有效数字即便用精度大的类型来保存精度小的类型,也不是没有风险的。比如用float来保存长整型数据,就可能出现错误,因为float有效数字位数只有6~原创 2017-12-12 08:47:02 · 1813 阅读 · 0 评论