摘要: 求一个字符串中所有出现的字符的排列组合。首先把这个问题分解成若干个小问题:分治法。将所有的字符的排列可以拆分为第一个字符的选取和其余所有字符。然后其余的字符又可以拆分为第一个字符的变化选取和其余的字符串。以此类推即可得到解答。这就是很明显的递归了。注意递归的结束条件以及什么时候把这个字符串压入vec 阅读全文
posted @ 2019-06-25 10:49 妮妮熊 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树的特点是根据中序遍历就是从小到大的顺序。所以要根据左->根->右的顺序进行递归。整体思路就是:按着中序遍历的顺序将树中的每一个结点与前一个结点连接起来。 递归的时候想一个问题,只要能把两个节点连起来,就能把所有的树的结点连起来。这个题还是很典型。 在表示尾结点的时候,我还在想这个使用一个指 阅读全文
posted @ 2019-06-24 16:56 妮妮熊 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树(BST树):首先是二叉树,其次:非叶子结点的左指针指向的结点的值小于其父节点的子树,右指针指向的结点的值大于其父节点的值。 这样就可以形成以个思路,来一个vector,首先把最后一个拿出来,它是根结点。然后从头开始找比它大的第一个数,区分左右子树。第一个比根结点大的树之前都是左子树,其余 阅读全文
posted @ 2019-06-18 10:51 妮妮熊 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 记录几个问题:首先,这道题目要打印出该路径,那么该路径如何存储? 树的结构只能从根结点向下走,而不能向父节点寻找。因此寻找出一条路径的时候,存储这个路径必须借助其他的数据结构,没有比vector更适合的了。 如何遍历整个树? 这是很经典的问题,这道题目要从根结点->左子树->右子树。这是很明显的前序 阅读全文
posted @ 2019-06-18 09:04 妮妮熊 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 层次打印二叉树,竟然用一个队列就很简单的完成了; 首先将树的根结点放进队列,然后出的时候是先进先出。并且出去的时候判断这个节点的左右节点是否有节点,如果有就插入队列的后面。 有一个小问题,37行的弹出操作也可以写在28之后,也就是说已经弹出队列的第一个结点,之后还可以在存好的指针中找到它的左右指针变 阅读全文
posted @ 2019-06-13 16:55 妮妮熊 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 今天这道题我花了流程图,思路清晰了很多,对于自己哪方面不够熟悉也清楚了。这个题可以建立一个辅助的栈,建立一个循环,一直判断第二个序列中的元素是否在栈顶,如果在栈顶就弹出栈顶的元素并且寻找第二个序列中的下一个数字,如果发现不在栈顶就一直给栈顶添加元素直到在栈顶遇见这个数字。代码在下面,第一次知道for 阅读全文
posted @ 2019-06-13 11:26 妮妮熊 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 看到这道题,我的第一个思路是在push进栈的时候直接比较一下该数和前一个数的大小关系,直接把最小的数始终放在栈顶。可是这样的话,这个结构就不是一个栈了,因为它不能满足先进后出的原则。 答案的做法是加一个辅助栈,直接在辅助栈里村小的数,如果来小的数字就更新,如果不来小的数字就不更新。如果加一个辅助栈那 阅读全文
posted @ 2019-06-12 21:14 妮妮熊 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 这种题,必然要一圈一圈循环,因此,考虑两个问题:1.如何终止循环 2.如何打印一圈 我今天偷懒了, main函数是我从答案搬来的。 阅读全文
posted @ 2019-06-11 15:12 妮妮熊 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 我的思路:很复杂,useless 答案,简单的让我想哭 问题在于:在选择终止递归条件是,void类型的函数可以直接return;以此终结。交换的时候可以直接用swap函数。还有如何递归去遍历一个树并且输出的每个结点呢?下篇再说。 阅读全文
posted @ 2019-06-10 20:43 妮妮熊 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 今天,借这个这个机会,先复习一下关于树的知识,以下关于树的内容全部来自于严阿姨写的《数据结构》。 一.树 树:由根结点和若干个不相交的子树构成(递归定义)。树是一种具有递归性质的数据结构。 树的结点:包含一个数据元素的内容及若干指向子树的分支。 结点的度:结点拥有的子树数成为结点的度。 叶子和分支节 阅读全文
posted @ 2019-06-10 09:23 妮妮熊 阅读(132) 评论(0) 推荐(0) 编辑