开始做算法题了,从AC率最高的开始做,思路一开始就找到了要用递归,但是细节上有很多需要修炼的,基础还是要打牢固。要判断是否镜像对称,只需要每次判断根节点的左子节点的左、右儿子是否相对应的等于右子节点的右、左儿子,然后递归调用isNodeSymmetric()即可。附上解法:/** * Defini....
分类:
其他好文 时间:
2014-10-28 08:10:11
阅读次数:
135
一:前言 今天在博客园里面看了一篇文章http://www.cnblogs.com/huangxincheng/p/4051854.html(单链表的倒置),其实自己看了一个小时最后那点还是没看明白,自己的不明白在于,递归调用到最后执行递归下面的代码是怎么执行的,如果执行了,执行时的数据从哪来的?....
分类:
编程语言 时间:
2014-10-27 19:27:00
阅读次数:
230
作者:张昌昌
为了获取一个压缩包中的文件,而该压缩包里可能又含有压缩包 、文件夹、文件夹里又包含压缩包、文件等各种嵌套的情况,采用广度优先遍历和深度优先遍历的方法解决了此问题。
public static List getFilesOfZipAndRar(String zipPath) throws IOException
{
String dest...
分类:
编程语言 时间:
2014-10-25 18:48:36
阅读次数:
438
文件搜索功能要用到findfirst和findnext函数,以及tsearchrec结果,采用深度优先算法,先搜索目录下的文件,然后搜索目录下的子目录递归调用,代码如下procedure TSearchThread.findfiles(apath: string); {通过递归调用,可以在当前目录....
分类:
编程语言 时间:
2014-10-21 00:53:17
阅读次数:
273
穷举递归和回溯算法在一般的递归函数中,如二分查找、反转文件等,在每个决策点只需要调用一个递归(比如在二分查找,在每个节点我们只需要选择递归左子树或者右子树),在这样的递归调用中,递归调用形成了一个线性结构,而算法的性能取决于调用函数的栈深度。比如对于反转文件,调用栈的深度等于文件的大小;再比如二分查...
分类:
编程语言 时间:
2014-10-20 22:34:57
阅读次数:
354
1、类中递归调用添加self;2、root为None,返回03、root不为None,root左右孩子为None,返回14、返回l和r最小深度,l和r初始为极大值; 1 # Definition for a binary tree node 2 # class TreeNode: 3 # ...
分类:
编程语言 时间:
2014-10-19 10:13:07
阅读次数:
222
1、类中递归调用函数需要加self# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...
分类:
编程语言 时间:
2014-10-19 10:11:52
阅读次数:
200
1、p或q为None的情况用开始的两个if语句进行判断;2、类中递归调用函数需要使用self进行调用;3、代码很简洁,最后几行通过同时为None和同时非None的条件进行判断; 1 # Definition for a binary tree node 2 # class TreeNode: 3 ....
分类:
编程语言 时间:
2014-10-19 01:17:13
阅读次数:
329
在scala中如果一个函数在最后一步调用自己(必须完全调用自己,不能加其他额外运算子),那么在scala中会复用函数栈,这样递归调用就转化成了线性的调用,效率大大的提高。If a function calls itself as its last action, the function's sta...
分类:
其他好文 时间:
2014-10-18 20:59:44
阅读次数:
188
题目:设计一个执行中序遍历的非递归算法解答:分析:1、使用栈模拟递归调用的过程,即可以实现中序遍历2、在结点中增加指针域,使该指针域指向父节点,通过迭代即可实现中序遍历非递归算法:栈模拟算法版本一:// InOrder Traveraslvoid InOrder( SearchTree T ) { ...
分类:
编程语言 时间:
2014-10-18 17:00:00
阅读次数:
285