今天复习了一下二叉树的前序遍历、中序遍历、后序遍历的递归与非递归算法,顺便记录一下://TreeTest.h#include struct TreeNode{ int value; TreeNode* leftChild; TreeNode* rightChild; void...
分类:
编程语言 时间:
2015-03-06 00:58:18
阅读次数:
210
LeetCode 上不会的Reverse IntegerSingle Number II斐波那契数列 非递归算法Maximum Subarray 维持最大值Integer to RomanSort ColorsPopulating Next Right Pointers in Each Node 怎...
分类:
其他好文 时间:
2015-03-05 12:15:22
阅读次数:
161
递归与分治策略(一)
简而言之,递归就是自己调用自己。
递归算法:直接或者间接地调用自身的算法。
递归函数:用函数自身给出定义的函数。
注意:每个递归函数都必须有非递归定义的初始值,以确保递归函数完成计算。
下面通过两个例子来介绍递归的特点
例1 阶乘函数
阶乘函数递归地定义为:
n!=1 (n=0)
或者
n!=n(n-1)! (n>0)
下面用一段简单的...
分类:
编程语言 时间:
2015-03-02 14:58:09
阅读次数:
171
这是一个入门级的算法,但它却揭示了计算机算法设计的一些核心思想:枚举与分治递归。这篇文章主要由简单到复杂来解析这一问题,流程大致是:枚举求解(充分利用计算机的计算能力来解决单调复杂问题),算法分析与改进(相对偏移化简枚举法),分治算法(divide-conquer,计算机核心思想之一),递归算法与递...
分类:
编程语言 时间:
2015-03-01 00:14:24
阅读次数:
330
1. 简要介绍 关于二叉树问题,由于其本身固有的递归属性,通常我们可以用递归算法来解决。(《编程之美》,P253) 总结的题目主要以leetcode题目为主。2. 测试用例 功能测试:平衡的二叉树,不是平衡的二叉树,二叉树中所有节点都没有左/右子树 特殊输入测试:二叉树只有一个节点,二叉树...
分类:
其他好文 时间:
2015-02-26 20:17:53
阅读次数:
143
C++拾遗--函数模板
前言
泛型的核心思想是数据与算法分离。函数模板是泛型编程的基础。
函数模板
函数模板以 template 开头,arg_list是泛型参数的列表。
1.模板的泛型参数个数确定
实例一
下面是一个加法函数模板,在实例化时,我们传入普通的数据类型。...
分类:
编程语言 时间:
2015-02-17 11:43:18
阅读次数:
224
#include <iostream>
#include <string>
using namespace std;
typedef struct BiTNode
{
int data;
int flag;
BiTNode *lchild,*rchild;
} BTNode,BTree;
//二叉排序树的查找非递归算法
//在二叉...
分类:
其他好文 时间:
2015-02-13 16:47:02
阅读次数:
129
前面我们说了二叉树前序中序后序遍历的递归非递归算法的实现,下面我们再来说说二叉搜索树~
二叉排序树分为静态查找(find)和动态查找(insert、delete)
二叉搜索树:一棵二叉树,可以为空;如果不为空,满足下列性质:
1.非空左子树的所有键值小于其根结点的键值。
2.非空右子树的所有键值大于其根结点的键值
3.左右子树都是二叉搜索树!!
...
分类:
编程语言 时间:
2015-02-11 09:24:00
阅读次数:
355
汉诺塔问题递归算法分析: 一个庙里有三个柱子,第一个有64个盘子,从上往下盘子越来越大。要求庙里的老和尚把这64个盘子全部移动到第三个柱子上。移动的时候始终只能小盘子压着大盘子。而且每次只能移动一个。 1、此时老和尚(后面我们叫他第一个和尚)觉得很难,所以他想:要是有一个人能把前63个盘子先移动.....
分类:
编程语言 时间:
2015-02-06 23:14:41
阅读次数:
129
算法之递归(1)最近事情太多了,很少有时间可以完全静下来认真研究一些东西;每当专注的写代码的时候,总是被其他事情打断。还好,礼拜天来了,总算可以抽出一些时间了J《代码之美》第一章有一个关于模式匹配的问题,即根据正则表达式在相应的文本中找到匹配的值,找到返回1,没找到返回0。撇开具体的实现,里面优美的...
分类:
编程语言 时间:
2015-02-05 13:31:46
阅读次数:
153