数据结构
Violet-Guo
努力一直前进的程序猿一枚~~
展开
-
UVA - 11995 - I Can Guess the Data Structure!(栈、队列、优先队列)
UVA 11995.I Can Guess the Data Structure!DescriptionThere is a bag-like data structure, supporting two operations: operation meaning 1 x Throw an element x into the bag. 2 Take out an eleme原创 2015-08-10 14:24:00 · 1010 阅读 · 0 评论 -
九度OJ - 1078 - 二叉树遍历
题目描述二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。输入两个字符串,其长度n均小于等于2.........原创 2016-05-09 23:39:39 · 834 阅读 · 0 评论 -
数据结构面试题(更新中。。。)
1. 堆排序的时间复杂度和堆排序中建堆过程的时间复杂度是堆排序的时间复杂度是O(n log n),堆排序中建堆过程的时间复杂度是n。2. 就分类算法所用的辅助空间而言,堆分类、快速分类和归并分类的关系是什么?堆分类<快速分类<归并分类原创 2016-03-25 10:59:12 · 935 阅读 · 0 评论 -
堆排序算法知识点总结
1. 在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆”,减序排列则要采用“小根堆”。堆排序的方法:首先,将当前的数组调整为堆,也就是建立堆。然后把根与最后的元素交换,重新调整堆,然后再把调整后的根与倒数第二个元素交换,再重新调整堆,直到全部元素交换完毕。这样,对于大根堆,最大元素排列到了最后,是递增排序。而小根堆,最小元素排列到了最后,是递减排序。2. 找出若干个数中最大/最小的前K个原创 2016-04-18 23:16:12 · 4598 阅读 · 0 评论 -
九度OJ - 1184 - 二叉树遍历
题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入输入包括1行字符串,长度不超过100。输出可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字原创 2016-05-10 22:22:04 · 1249 阅读 · 0 评论 -
九度OJ - 1350 - 二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。输入第一行输入有n,n表示结点数,结点号从1到n。根结点为1。 n <= 10。 接下来有n行,每行有两个个整型a和b,表示第i个节点的左右孩子孩子。a为左孩子,b为右孩子。当a为-1时,没有左孩子。当b为-1时,没有右孩子。输出输出一个整型,表示树的深度。样例输入原创 2016-05-10 22:05:18 · 599 阅读 · 0 评论 -
九度OJ - 1176 - 树查找
题目描述有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。输入输入有多组数据。 每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。输出输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。样例输入 4 1 2 3 4 2样例输出 2 3来源2010年北京邮电大学网院研究生机试原创 2016-05-10 11:05:58 · 599 阅读 · 0 评论 -
九度OJ - 1201 - 二叉排序树
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。样例输入 5 1 6 5 9 8样例输出 1 6 5 9 8原创 2016-05-10 15:09:09 · 1049 阅读 · 0 评论 -
九度OJ - 1467 - 二叉排序树
题目描述二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;左、右子树本身也是一颗二叉排序树。现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有原创 2016-05-10 15:37:42 · 1124 阅读 · 0 评论 -
九度OJ - 1172 - 哈夫曼树
题目描述哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入输入有多组数据。 每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。输出输出权值。样例输入 5 1 2 2 5 9样例输出 37来源2010年北京邮电大学计原创 2016-05-10 15:13:48 · 547 阅读 · 0 评论 -
九度OJ - 1009 - 二叉搜索树
题目描述判断两序列是否为同一二叉搜索树序列输入开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。 接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。 接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。输出如果序列相同则输出YES,否则输出NO样例输入原创 2016-05-10 13:56:10 · 705 阅读 · 0 评论 -
两个栈模拟队列,两个队列模拟栈
两个栈模拟队列入队:将元素进栈A。出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。C/C++代码class Solution{public: void push(int node) { //入队 stack1.push(node); } int pop() { //出队原创 2016-03-26 13:46:58 · 3744 阅读 · 0 评论 -
快速排序详解
快速排序详解+图解+源码转载 2016-03-26 11:01:35 · 622 阅读 · 0 评论