数据结构基础汇总
vocaloid01
小菜鸟一只_(:з」∠)_前来膜拜各路大佬orz
展开
-
二叉搜索树前中后序遍历非递归实现
前几天面试时被问到,之前一直用递归写法也没想过优化,这次被问到了就搞搞。前中序遍历思路很简单,比较难的是后序。后序有两点要考虑到:1.当前结点是入栈过左子结点。2.当前结点是否左右子结点都处理完了。#include <bits/stdc++.h>using namespace std;typedef struct Node* node;struct Nod...原创 2019-11-12 19:14:28 · 300 阅读 · 0 评论 -
哈夫曼树实现并得到哈夫曼编码
哈夫曼编码的详细内容可以看这个大佬:哈夫曼(huffman)树和哈夫曼编码#include <bits/stdc++.h>using namespace std;typedef struct Node* node;struct Node{ int value; char tx; node left,right; Node(){ value = 0; l...原创 2018-11-15 14:58:47 · 1151 阅读 · 0 评论 -
基环树,基环内向树,基环外向树
一、基环树在了解了树的基础上来解释基环树——树加一条边使之成环(也就是说,在严格意义上来说,基环树并不是树,就像老婆饼没有老婆一样,基环树是个图) 二、基环内向树首先它是一个有向图,它构成类似基环树的结构,有一个特点是每个点都有且只有一个出度,并且环外的节点方向指向环内。三、基环外向树与基环内向树相反,它有且只有一个入度(基环内向树是出度),并且并且由环指向环外(额...转载 2018-08-08 19:37:59 · 4122 阅读 · 2 评论 -
归并排序模板
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MAXN 100int board[MAXN];int result[MAXN];void Merge(int left,int mid,int right)//治{ int a原创 2018-01-22 11:01:35 · 131 阅读 · 0 评论 -
pta Percolate Up and Down(最小堆的插入维护和删除维护)
Write the routines to do a “percolate up” and a “percolate down” in a binary min-heap. Format of functions:void PercolateUp( int p, PriorityQueue H );void PercolateDown( int p, PriorityQueue H );wher原创 2017-11-12 19:16:47 · 4227 阅读 · 1 评论 -
二叉树已知前序和后序求中序的相关补充
关于已知前序和后序能不能求中序这个问题,我看大部分书上都说是不能。这个应该是为了迎合大众的说法。 准确点说应该是“不一定能”。 例如:前序 ———— ABC 后序———— BCA已知中序只能是 BAC另外 如果只有根节点就跟不用说了。 不过一般不会用前序和后序求中序的,因为大部分情况下是没有结果的。目前貌似只在一些选择题中看见。反正...原创 2017-08-11 13:08:04 · 402 阅读 · 1 评论 -
二叉树的遍历 及前中序转换成后序遍历
给出一棵二叉树的中序和前序遍历,输出它的后序遍历。Input: 本题有多组数据,输入处理到文件结束。 每组数据的第一行包括一个整数n,表示这棵二叉树一共有n个节点。 接下来的一行每行包括n个整数,表示这棵树的中序遍历。 接下来的一行每行包括n个整数,表示这棵树的前序遍历。 3<= n <= 100 Output:每组...原创 2017-07-24 17:18:01 · 3793 阅读 · 0 评论 -
二叉树的四种遍历
函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Pos原创 2017-10-25 21:46:16 · 386 阅读 · 0 评论 -
求二叉树高度
函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};要求函数返回给定二叉树BT的高度值原创 2017-10-25 23:34:09 · 232 阅读 · 0 评论 -
pta ——还原二叉树
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5思路: 递归还原二叉树,主要是要理解递归大而化小的思想,把树的问题往左右子原创 2017-11-13 17:30:11 · 2026 阅读 · 0 评论 -
纯C语言实现的AVL树(插入&删除&前序遍历输出)
突发奇想的敲了一遍,主要是想加深一下理解,毕竟AVL还是很重要的。 敲完了就想着发上来方便以后考前看看…….. 顺便推荐一下这位大神的文章http://www.cnblogs.com/skywang12345/p/3576969.html#include <stdio.h>#include <stdlib.h>#define MAX(a,b) ((a)>(b)?(a):(b)) //比较大小原创 2017-11-06 22:07:57 · 1240 阅读 · 0 评论 -
pat 是否同一棵二叉搜索树
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序原创 2017-11-10 20:11:05 · 385 阅读 · 0 评论 -
pta——电话聊天狂人(c二叉树实现)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。 输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。 输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。 输原创 2017-11-27 19:54:47 · 1105 阅读 · 0 评论