
数据结构/算法
seanyxie
谢思源的个人博客
展开
-
二叉树的三种遍历方法(递归和非递归)
<br />二叉树类的头文件“树.h”<br />#include<iostream>#include<stack> //STL#include<queue>using namespace std;class Tree{public: Tree *Left; Tree *Right; char data; Tree(); //成员函数 void CreateTree(Tree* &node); //递归的遍历二叉树 void PreOrderV原创 2010-12-17 13:53:00 · 3288 阅读 · 2 评论 -
求子数组的最大值
<br />/*关于子数组,就是对于一个数组,例如int A[]=2,-3,4,6,-2,4,-6,0,1选择任意个数字,就是他的子数组,例如4,6就是他的一个子数组,而且是和最大的一项2011.1.25 漯河*/#include<iostream>using namespace std;template<typename T>T SelectMaxChildArray(T* Array,int Length,int &Left,int &Right){ T Sum=原创 2011-02-08 17:59:00 · 1673 阅读 · 0 评论 -
平衡二叉树
<br />形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是:<br /> 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR ,令 hl 和 hr 分别为左、右子树的深度。当且仅当<br /> ①TL 、 TR 都是平衡二叉树; <br /> ② | hl - hr |≤ 1;<br />时,则 T 是平衡二叉树。<br />【例】如图 8.4 所示。<br /><br />(a)平衡二叉树 (b)非平衡转载 2011-03-04 23:31:00 · 2136 阅读 · 0 评论 -
判断两个链表是否交叉,并求出交叉点
<br />在前面一篇文章中讲了如何判断一个链表中有环,如果有环的话,又如何判断出环出现在哪里<br />http://blog.youkuaiyun.com/xie376450483/archive/2010/08/19/5825261.aspx<br /> <br />今天要讲的和那篇类似,就是给定两个链表,如何来判断这两个链表相交了<br />首先应该分两种情况考虑,第一:这两个链表本身都没有环。 第二:这两个链表本身都有环<br /> <br />首先讲都没有环的情况,如下图<br /><br />方法很多,原创 2011-03-13 23:00:00 · 9217 阅读 · 0 评论 -
八皇后问题(回溯法)
#includeusing namespace std;#define N 8//N代表皇后数void queen(){ int Count=0; //计算总共的解的数量 int column[N+1]; //column[m]=n表示第m行,第n行放置了皇后,这里下表并从0开始 int row[N+1]; //row[m]=1表示第m行没有皇后,=0表示有皇后 int b[2*N+1]; //b[m]=1表示第m条主对角线没有皇后, int原创 2011-01-22 20:57:00 · 12473 阅读 · 6 评论 -
A*寻路初探
A*(念作A星)算法,它只是描述算法的原理,使你可以在进一步的阅读中理解其他相关的资料。序:搜索区域假设有人想从A点移动到一墙之隔的B点,如下图,绿色的是起点A,红色是终点B,蓝色方块是中间的墙。[图1]你首先注意到,搜索区域被我们划分成了方形网格。像这样,简化搜索区域,是寻路的第一步。这一方法把搜索区域简化成了一个二维数组。数组的每一个元素是网格的一个方块,方块被标记为可通过转载 2010-10-24 19:54:00 · 2312 阅读 · 0 评论