- 博客(27)
- 问答 (1)
- 收藏
- 关注

原创 PAT甲级刷题总结
文章目录**四则运算与堆栈:****查找**二分查找 O(logN)two pointers(利用数列递增的思想)复杂度O(n)**树的遍历**两种题型:dfs和利用先中后序遍历序列特点写递归BST**并查集****堆****图**概述图的遍历dfs解决无权图最短路径Dijkstra求有权图最短路径图的连通性判断(DFS或并查集)拓扑排序**C++**输入输出math.h头文件algorithm头文件cctype头文件STLstringmap(按照键从小到大排序)vector运算符重载set引用和传参**
2020-09-13 14:23:36
1073
原创 05-树7 堆中的路径
题目思路最小堆的建立路径的输出——由二叉树父子关系回溯到堆顶核心代码#include<stdio.h>#include<stdlib.h>#define mindata -20000typedef struct HNode* Heap;struct HNode{ int* data; int size; int capacity;};Hea...
2019-06-02 21:05:24
160
原创 04-树6 Complete Binary Search Tree
题目思路CB(S)T——对完全二叉树而言,如果树结点数已知,那么树结构就确定,即对每一个结点而言,其左树和右树个数可知;对二叉搜索树而言,小数在左,大数在右,故可由左右树包含结点个数,递归找根;根据二叉树的结构特点(每次递归可根据父结点位置得到子结点的位置),直接填充即可。level order traversal核心代码int getLeftTreeSize(int N)//已知...
2019-06-02 20:33:48
128
原创 04-树4 是否同一棵二叉搜索树
题目思路二叉搜索树的建树操作核心代码typedef struct TreeNode* BST;struct TreeNode{ int data; BST left; BST right;};
2019-06-02 18:45:33
134
原创 03-树3 Tree Traversals Again
题目思路方法一:建实体树根据Push,Pop操作顺序(本质是先序遍历顺序:先建根,再填充其左树、如果左树已填充,填充其右树)建树,再后序遍历输出。方法二:抽象树:根据先序序列和中序序列得到后序序列/*方法一*/int plantTree(int N,struct BinTree T[]){ char op[5]; int data; Ptrs s; s=...
2019-06-02 14:36:23
132
原创 03-树2 List Leaves
题目思路数组存储二叉树结构二叉树的层序遍历(用队列),遍历过程中输出叶子结点代码/*树结构*/typedef struct TreeNode* BinTree;typedef struct QNode* Queue;struct TreeNode{ int left; int right;};/*队列结点*/struct Node{ ...
2019-06-02 10:24:47
118
原创 03-树1 树的同构
题目给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。思路建树A,B、对A每一个树结点,在树B中找到相应结点,比较其左右儿子是否相同注意C语言char类型数据的输入代码typ...
2019-06-01 15:18:24
157
转载 集合及运算
并查集问题——合并集合、查某元素属于什么集合集合存储的实现:使用树结构查找某个元素所在集合typedef struct Node{ ElementType Data; int parent;}SetType;int Find(SetType S[],ElementType X){ /* 在数组S中查找值为X的元素所属的集合 */ /* Ma...
2019-06-01 13:23:46
496
转载 哈夫曼树及哈夫曼编码
概念typedef struct TreeNode* HuffmanTree;struct TreeNode{ int weight; HuffmanTree Left,Right;};typedef struct HNode* Heap;struct HNode{ HuffmanTree Elements; int Size; int Capaci...
2019-06-01 12:36:45
559
转载 堆(Heap)
堆的定义优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。堆的抽象数据类型描述以最大堆为例•MaxHeap Create( int MaxSize ):创建一个空的最大堆。•Boolean IsFull( MaxHeap H ):判断最大堆H是否已满。•Insert( MaxHeap H, Ele...
2019-06-01 00:03:59
180
转载 平衡二叉树(AVL)
概念二叉搜索树的查找效率与树的深度有关平衡因子(BF):BF=HL-HR(HL——左子树高度;HR——右子树高度)平衡二叉树(Balanced Binary Tree/AVL树):空树,或者任一结点左、右子树高度差的绝对值不超过1,即==|BF(T) |≤ 1 ==...
2019-05-31 21:27:04
693
原创 二叉搜索树——动态查找
二叉搜索树(BST):一棵二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。...
2019-05-31 19:33:28
490
转载 二叉树及存储结构
定义二叉树T:一个有穷的结点集合。这个集合可以为空若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成特殊的二叉树斜二叉树(Skewed Binary Tree)完美二叉树(Perfect Binary Tree)/满二叉树(Full Binary Tree)完全二叉树(Complete Binary Tree):有n个结点的二叉树,对树中结点按从上至下、...
2019-05-30 15:26:47
386
转载 树的定义及表示
树的定义树的概念当n=0时,称为空树;对于任一棵非空树(n> 0),它具备以下性质: 树中有一个称为“根(Root)”的特殊结点,用 r 表示; 其余结点可分为m(m>0)个互不相交的有限集T1,T2,… ,Tm,其 中每个集合本身又是一棵树,称为原来树的“子树(SubTree)”子树是不相交的; 除了根结点外,每个结点有且仅有一个父结点; 一棵N个结点的树有...
2019-05-30 14:55:41
1916
原创 02-线性结构4 Pop Sequence
题目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 supposed to tell if a given sequence of numbers is a possible pop sequence o...
2019-05-30 11:11:35
159
原创 02-线性结构3 Reversing Linked List
题目大意Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; i...
2019-05-29 20:19:18
116
转载 队列
队列(Queue)插入和删除操作:只能在一端插入,而在另一端删除。顺序存储队列的顺序存储结构通常由一个一维数组和一个记录队列头元 素位置的变量front以及一个记录队列尾元素位置的变量rear组成typedef int Position;struct QNode { ElementType *Data; /* 存储元素的数组 */ Positi...
2019-05-26 19:51:44
89
原创 二分查找
Position BinarySearch(List L,ElementType X){ if(X<L->Data[1]||X>L->Data[L->Last]) return NotFound; /*出界*/ int left=1;int right=L->Last; int mid; ...
2019-05-26 16:35:34
97
原创 Maximum Subsequence Sum
int Left,Right;//记录最大子列和的左右端/全局变量int MaxSubsequenceSum(int a[],int N){ int sum=0; int maxsum=0; Left=0;Right=N-1; int count=0; /*记录当前最大子列和元素数*/ for(int i=0;i<N;i++){ ...
2019-05-26 16:27:09
128
原创 排序大法(下)
快速排序算法概述:分而治之(递归应用)、选主元、划分子列、cutoff阈值代码如下:(未设阈值)void swap(int* a,int* b){ int tmp; tmp=*a;*a=*b;*b=tmp;}int median3(int A[],int left,int right){ int center=(left+right)/2; if(A[le...
2019-05-16 21:13:14
100
转载 排序大法
测评要求给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:103个随机整数;数据4:104个随机整数;数据5:105个随机整数;数据6:105个顺序整数;数据7:105个逆序整数;数据8:105个基本有序的整数;数据...
2019-05-15 00:08:18
100
空空如也
PTA 03-树3 Tree Traversals Again
2019-04-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人