随笔分类 - 

二叉排序树
摘要:题目描述二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要判断两序列是否为同一二叉排序树输入开始一个数n,(1 2 #include 3 #include 4 struct node 5 { 6 char data; 7 struct node *left,*right; 8 }; 9 int ans;10 //递归建立二叉排序树11 void build(struct node **p,c... 阅读全文
posted @ 2013-07-29 09:17 straw_berry 阅读(186) 评论(0) 推荐(0)
算术表达式的转换
摘要:题目描述小明在学习了数据结构之后,突然想起了以前没有解决的算术表达式转化成后缀式的问题,今天他想解决一下。 因为有了数据结构的基础小明很快就解出了这个问题,但是他突然想到怎么求出算术表达式的前缀式和中缀式呢?小明很困惑。聪明的你帮他解决吧。输入输入一算术表达式,以\'#\'字符作为结束标志。(数据保证无空格,只有一组输入)输出输出该表达式转换所得到的前缀式 中缀式 后缀式。分三行输出,顺序是前缀式 中缀式 后缀式。示例输入a*b+(c-d/e)*f#示例输出+*ab*-c/defa*b+c-d/e*fab*cde/-f*+代码操作归结为:将中缀式转化为后缀式;将后缀式转化为表达 阅读全文
posted @ 2013-07-28 15:45 straw_berry 阅读(1014) 评论(0) 推荐(0)
树-堆结构练习——合并果子之哈夫曼树
摘要:题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所消耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3 阅读全文
posted @ 2013-06-29 12:46 straw_berry 阅读(454) 评论(0) 推荐(0)
数据结构实验之求二叉树后序遍历和层次遍历
摘要:题目描述已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。输入输入数据有多组,第一行是一个整数t (t 2 #include 3 #include 4 struct tree 5 { 6 char data; 7 struct tree *lchild,*rchild; 8 }; 9 struct tree *creat(struct tree *root,int len,char *s1,char *s2 )10 {11 if(len==0)12 {13 14 return NULL;15 }16 ... 阅读全文
posted @ 2013-06-28 20:56 straw_berry 阅读(270) 评论(0) 推荐(0)
数据结构实验之二叉树的建立与遍历
摘要:题目描述 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。输入输入一个长度小于50个字符的字符串。输出输出共有4行:第1行输出中序遍历序列;第2行输出后序遍历序列;第3行输出叶子节点个数;第4行输出二叉树深度。示例输入abc,,de,g,,f,,,示例输出cbegdfacgefdba35 1 #include 2 #include 3 #include 4 struct tree 5 { 6 char data; 7 struct tree *... 阅读全文
posted @ 2013-06-28 20:53 straw_berry 阅读(529) 评论(0) 推荐(0)
数据结构实验之栈二:一般算术表达式转换成后缀式
摘要:题目描述对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。输入输入一个算术表达式,以‘#’字符作为结束标志。输出输出该表达式转换所得到的后缀式。示例输入a*b+(c-d/e)*f#示例输出ab*cde/-f*+ 1 #include 2 #include 3 int main() 4 { 5 char s[101],st[101]; 6 int top; 7 top = -1; 8 scanf("%s",s); 9 for(int i = 0; s[i]!= '#'; i++)10 {11 if(s[i] >= '... 阅读全文
posted @ 2013-06-24 01:29 straw_berry 阅读(430) 评论(0) 推荐(0)