![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
码院
这个作者很懒,什么都没留下…
展开
-
树状数组
所谓的树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需原创 2012-08-10 20:14:38 · 600 阅读 · 0 评论 -
二叉树中路径的求解
问题:求二叉树中根结点到P结点的路径void path(char ch) { int top=-1; int tag[100]; BiNode *A[100];//模拟栈 BiNode *T=root; while(T!=NULL||top!=-1) { while(T!=NULL)//扫描左子树 { top++;原创 2012-12-04 19:58:16 · 686 阅读 · 0 评论 -
哈夫曼编码
#includeconst int MAX=20;//哈夫曼树输入数据的结构struct huffinit{ char data; int weight;};//哈夫曼树结点的结构struct huffnode{ int weight; int lchild,rchild,parent;};//哈夫曼树编码的结构s原创 2012-12-04 20:00:22 · 1083 阅读 · 0 评论 -
二叉树的遍历
一:递归遍历void Order(Binode* bt){ if(bt==NULL) return; else { coutdata;//前序遍历 Order(bt->lchild); coutdata;//中序遍历 Order(bt->rchild); coutdata;//后序遍历 }}二:非递归遍历前序遍历v原创 2012-11-17 15:20:11 · 559 阅读 · 0 评论 -
二叉树的顺序存储转化为链接存储
题意明确 代码:#includeusing namespace std;struct Binode{ char data; Binode* lchild; Binode* rchild;};class Bitree{private: Binode *root; void Release(Binode *bt) { if(bt!=NULL原创 2012-11-16 21:21:26 · 1306 阅读 · 0 评论 -
二叉树相似
所谓的二叉树相似是指要么它们都为空或都只有一个根结点,要么它们的左右树均相似。参考代码:#includeusing namespace std;struct Binode{ char data; Binode* lchild; Binode* rchild;};class Bitree{private: Binode* root1; Binode*原创 2012-11-16 21:26:02 · 3051 阅读 · 2 评论 -
二叉树转化为完全二叉树
题意就是将普通的二叉树转化为完全二叉树。该二叉树用链接存储,完全二叉树用顺序存储。想法就是把空结点分配空间并其数据域赋为‘#’;指针域为空。层序遍历该二叉树参考代码:#includeusing namespace std;struct BiNode{ char data; BiNode *lchild,*rchild;};char a[200];int fl原创 2012-11-28 22:10:46 · 3907 阅读 · 0 评论 -
顺序存储和链接存储的相互转化
顺序存储转化为链接存储:BTreeNode *create(char* str, int pose, int size) //下标从0开始{ char ch; BTreeNode * t; char* p=str; ch = p[pose]; if(ch=='#'|| pose>=size) return NULL; // 表示空结点 else原创 2012-11-24 13:44:46 · 1199 阅读 · 0 评论 -
表达式求值
一:中缀表达式求值中缀表达式是指双目运算符在两个运算对象之间,设运算符有+,-,*,/,#其中#为中缀表达式的界定符。中缀表达式的求值过程需要两个栈,运算对象栈OPND和运算符栈OPTR。求值过程的伪代码描述为:1.将OPND初始化为空,将栈OPTR初始化为表达式的界定符#2.从左到右扫描表达式的每一个字执行下面操作,直至遇到界定符#2.1若当前字符为运算对象,则入栈O原创 2012-11-07 19:20:23 · 698 阅读 · 0 评论 -
关于STL中heap的用法
在STL中heap的用法主要是make_heap(),push_heap(),pop_heap()的用法。具体均在代码中:// range heap example 用heap构造出来的实际上是一棵树#include #include #include using namespace std;int main (){ int myints[] = {10,20原创 2012-08-10 20:18:17 · 1848 阅读 · 0 评论 -
二叉树的建立
一:根据扩展二叉树的前序遍历序列建立该二叉树Binode* Creat(Binode* bt){ char ch; cin>>ch; if(ch=='#') bt=NULL; else { bt=new Binode; bt->data=ch; bt->lchild=Creat(bt->lchild); bt->rchild=Creat(b原创 2012-11-17 14:48:47 · 918 阅读 · 0 评论