1.题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 示例 2: 示例 3: 2.解法一:递归 3.解法二:非递归 4.问题转化:树的序列化,比较字符串 ...
分类:
其他好文 时间:
2018-12-19 19:34:18
阅读次数:
155
在函数执行时系统需要设立一个“递归工作栈”存储第一层递归所需的信息,此工作栈是递归函数执行的辅助空间,所以可以看出,递归程序在执行时需要系统提供隐式栈这种数据结构来实现,对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化可直接写出相应的非递归算法。这种利用栈消除递归过程的步骤如下。 (1 ...
分类:
其他好文 时间:
2018-12-15 15:51:07
阅读次数:
124
1.时间复杂度的分析 1.时间复杂度的分析 在算法分析中,当一个算法中包含递归调用时,其时间复杂度的分析可以转化为一个递归方程求解。也就是数学上求渐进解得问题,而递归方唱的形式多种多样,其求解方法也不尽相同。迭代法是求解递归方程的一种常用方法,其基本步骤是迭代地展开递归方程的右端,使之成为一个非递归 ...
分类:
编程语言 时间:
2018-12-15 15:44:06
阅读次数:
194
1. 创建二叉树 因为在含有n个结点的二叉链表中一定有n+1个空指针域,所以在输入数据时一定要给出n+1个空指针值。 2,递归遍历算法 3,非递归遍历算法 ...
分类:
其他好文 时间:
2018-12-10 14:12:33
阅读次数:
163
前序非递归遍历 中序非递归遍历 后序非递归遍历 要保证根结点在左孩子和右孩子访问之后才能访问,因此对于任一结点P,先将其入栈。如果P不存在左孩子和右孩子,则可以直接访问它;或者P存 在左孩子或者右孩子,但是其左孩子和右孩子都已被访问过了,则同样可以直接访问该结点。若非上述两种情况,则将P的右孩子和左 ...
分类:
其他好文 时间:
2018-12-06 20:49:31
阅读次数:
149
一、递归实现 以上的cout<<root->data;是对结点的一种操作,这里可以对结点做任意想做的操作。 二、非递归实现 ...
分类:
其他好文 时间:
2018-12-04 14:33:56
阅读次数:
158
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解法一: 非递归解 class Solution { public: ListNode *Merge(ListNode *pHead1, ListNode *pHead2) { if (pHead1 ...
分类:
编程语言 时间:
2018-12-02 12:08:13
阅读次数:
174
深度优先搜索和广度优先搜索的深入讨论 (一)深度优先搜索的特点是: (1)无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生规则以及输出要求。 (2)深度优先搜索法有递归以及非递归两种 ...
分类:
其他好文 时间:
2018-12-01 12:59:13
阅读次数:
230
public class Solution { public int Fibonacci(int n) { //错误输入处理 if(n<0) return -1; int pre = 1; int result = 0; for(int i=0; i<n; i++){ //计算第i项 result ...
分类:
其他好文 时间:
2018-11-26 13:49:07
阅读次数:
156
CF741D. Arpa’s letter marked tree and Mehrdad’s Dokhtar kosh paths 分析: 最多有一个字符出现奇数次 维护某个状态下深度的最大值,注意是全局深度 写成非递归形式方便理解 代码: cpp include include include ...
分类:
其他好文 时间:
2018-11-25 14:29:42
阅读次数:
221