1. 层序构建和先序遍历: 1 public class Tree { 2 public Tree left; 3 public Tree right; 4 public int val; 5 6 public Tree() { 7 8 } 9 10 ...
分类:
其他好文 时间:
2014-07-09 21:16:15
阅读次数:
150
深度优先搜索(DFS)是搜索算法的一种。最早接触DFS应该是在二叉树的遍历里面,二叉树的先序、中序和后序遍历实际上都属于深度优先遍历,实质就是深度优先搜索,后来在图的深度优先遍历中则看到了更纯正的深度优先搜索算法。
通常,我们将回溯法和DFS等同看待,可以用一个等式表示它们的关系:回溯法=DFS+剪枝。所以回溯法是DFS的延伸,其目的在于通过剪枝使得在深度优先搜索过程中如果满足了回...
分类:
其他好文 时间:
2014-07-08 20:34:20
阅读次数:
271
1.先序遍历非递归算法
#define maxsize 100
typedef struct {
Bitree Elem[maxsize];
int top;
} SqStack;
void PreOrderUnrec(Bitree t) {
SqStack s;
StackInit(s);
p=t;
while (p!=...
分类:
其他好文 时间:
2014-07-08 17:13:18
阅读次数:
267
回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需解的活结点...
分类:
其他好文 时间:
2014-07-08 16:53:41
阅读次数:
256
前言
在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历。递归写法,只要理解思想,几行代码。可是非递归写法却很不容易。这里特地总结下,透彻解析它们的非递归写法。其中,中序遍历的非递归写法最简单,后序遍历最难。我们的讨论基础是这样的:...
分类:
其他好文 时间:
2014-07-08 16:16:25
阅读次数:
369
AOP两种代理的区别
Jdk基于接口实现:JDK动态代理对实现了接口的类进行代理。
CGLIB基于继承:CGLIB代理可以对类代理,主要对指定的类生成一个子类,因为是继承,所以目标类最好不要使用final声明。
如果目标对象实现了接口,默认情况下采用JDK的动态代理实现AOP,也可以强制使用CGLB生成代理实现;
如果目标对象没有实现接口,那么必须引入CGLB,spring会在JDK的动态代理和CGLB代理之间切换
通常情况下,鼓励使用jdk代理,因...
分类:
其他好文 时间:
2014-07-08 15:48:13
阅读次数:
293
一道和Leetcode的一道题目基本上一样的题目。
给出前序遍历和中序遍历序列,要求根据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出。
Leetcode上有给出后序和中序,恢复二叉树的。
不过其实算法都是一样的。仿佛又回到了做Leetcode题的那段岁月中了。
#include
#include
#include
using std::string;
const int...
分类:
其他好文 时间:
2014-07-06 12:24:42
阅读次数:
129
判断二叉树是不平衡树 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 输入一颗二叉树的根结点, 判断该树是不是平衡二叉树.二叉平衡树: 任意结点的左右子树的深度相差不超过1.使用后序遍历的方式, 并且保存左右子树的深度, 进行比较.代码:/*
* main.cpp
*
* Created on: 2014.6.12
* Aut...
分类:
其他好文 时间:
2014-07-06 12:22:46
阅读次数:
161
二叉树的深度 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 输入一棵二叉树的根节点, 求该树的深度.依次选择最深的左右子树, 然后递归加1.代码:/*
* main.cpp
*
* Created on: 2014.6.12
* Author: Spike
*/
/*eclipse cdt, gcc 4.8.1*/
#...
分类:
其他好文 时间:
2014-07-06 00:39:59
阅读次数:
152