摘要:
树的存储有4种。 一、双亲表示法。 实现:定义顺序表存放树的节点,顺序表中的每个数据元素含两个域 1.数据域:存放节点信息。 2.双亲域:存放结点的双亲结点的位置。 二、孩子表示法。 实现:使用带头结点的单链表实现。 头节点:存放节点信息和第一个表结点的地址。 表结点:存放孩子节点的存储位置以及下一 阅读全文
摘要:
题目:点此 题目描述 在这个问题中,给定一个值S和一棵树。在树的每个节点有一个正整数,问有多少条路径的节点总和达到S。路径中节点的深度必须是升序的。假设节点1是根节点,根的深度是0,它的儿子节点的深度为1。路径不必一定从根节点开始。 输入格式 第一行是两个整数N和S,其中N是树的节点数。 第二行是N 阅读全文
摘要:
(最近没写博客,现在恢复了) 题目:点此 题目描述: 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。 思路:{ 对于这道题,很容易想到两重循环,一重累加求和,另一重计算阶乘。 但我用的是优化过的方法。 根据阶乘的定义n!=(n-1)!*n,对于任意一个整数n, 阅读全文
摘要:
数转换成二叉树:使用孩子兄弟表示法。 二叉树转换成树:将二叉树的右孩子转换成兄弟。 森林转换成二叉树:将森林中的每一棵树都转换成二叉树,然后把森林中每个结点连起来,调整角度,使其成为二叉树形状。 二叉树转换成森林:将二叉树分成n个互不相交、没有右子树的二叉树,然后将每个二叉树都转换成树。 阅读全文
摘要:
树的遍历有3种:先根遍历、中根遍历、后根遍历; 先根遍历:如果该二叉树为空树,则空操作,否则先访问根结点,再先根遍历左子树,最后先根遍历右子树。 1 //该二叉树用二叉链表存储,结点类型BiTreeNode 2 void pre_oder(BiTreeNode *root){ 3 if(root!= 阅读全文
摘要:
1.单调队列简介: 单调队列是一种数据结构,类似如单调栈,但里面的元素必须在一个区间内,如果“过时”就要出队。所以,单调队列可以在两端进行出队,但只能再队尾入队。按此性质,传统的队列已无法满足需求,需要使用双端队列,再C++的STL里,双端队列定义在deque里: #include <deque> 阅读全文
摘要:
1.单调栈简介 单调栈是一种数据结构,它里边存放的数据具有单调性,每个元素都只进栈一次,进栈时会把破坏栈的单调性的元素弹出。用代码表示就是: 1 stack <int> s;//单调栈,单调递增 2 int index;//要进栈的元素 3 while(!s.empty()&&s.top<index 阅读全文
摘要:
题目:看图 思路: 找规律,我们发现这个序列为10110101 10110101 10110101 …… 按照找到的规律,用循环数组就行了。 犯的错误: sum没清0。 收获: 变量累加之前要清0。 代码: 1 #include <iostream> 2 using namespace std; 3 阅读全文
摘要:
题目:点此 描述: 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右 阅读全文
摘要:
题目:点此。 题意描述: 任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7=22+2+20(21用2表示) 3=2+20 所以最后137可表示为: 2(2(2 阅读全文