引言 本文用了五种方法来求解这道题,从最初的n^3的复杂度到后面的n的复杂度,分别用到了递推公式、分而治之以及动态规划的方法去一步步降低算法的复杂度。 解题报告 首先我们很容易想到的一个解法就是三层遍历,首先子数组必定是连续的一串值,相当于从原数组array的下标范围0~n-1中选出i和j,去算ar...
分类:
编程语言 时间:
2015-05-19 12:39:48
阅读次数:
196
广度优先遍历(逐层遍历)从根节点开始,向下逐层访问每个节点,在每一层次上,从左到右访问每个节点。可以用队列实现二叉树的广度优先深度优先遍历按根、左子树、右子树三个部分进行访问有三种方式,分别称为先序遍历,中序遍历,后序遍历。前序遍历中序遍历后序遍历
分类:
其他好文 时间:
2015-05-11 17:24:56
阅读次数:
213
题目:
问题一:
给定一颗二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。那么分层遍历如图3-17中的二叉树,正确输出应为:
1,
2,3
4,5,6
7,8
问题二:
写另外一个函数,打印二叉树中的某层次的节点(从左到右),其中根节点为第0层,函数原型为int...
分类:
其他好文 时间:
2015-05-08 09:43:16
阅读次数:
153
题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层。
思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问“以该二叉树根节点的左右子节点为根节点的两颗子树”中层次为k-1的节点
代码:
struct pNode {
int data;
pNode *lChild;
pNode *rChild;
};
int ...
分类:
其他好文 时间:
2015-05-07 14:40:05
阅读次数:
146
题目如下:题目给出的例子不太好,容易让人误解成不断顺着右节点访问就好了,但是题目意思并不是这样。换成通俗的意思:按层遍历二叉树,输出每层的最右端结点。这就明白时一道二叉树层序遍历的问题,用一个队列来处理,但是问题是怎么来辨别每层的最右端结点,我思考了半天,最后想出的办法是利用一个标记位,例如上面的例...
分类:
编程语言 时间:
2015-04-27 00:08:55
阅读次数:
232
堆排算是排序算法中比较难的一个算法,在实现编码之前首先要对堆排的思想有一个清晰的思路,下面我们就来分析一下堆排序。
1.首先要明白堆排序第一步要有堆,也就是完全二叉树,那么问题来了,如何创建一个完全二叉树呢?完全二叉树是需要按层来创建的,如果你曾经编写过按层遍历二叉树这块会很好理解,按层的话要记录上一个结点,所以要用到 队列,创建的节点依次入队。
2.创建好完全二叉树,堆排...
分类:
编程语言 时间:
2015-04-21 09:56:25
阅读次数:
165
好久不写了,最近忙毕业论文呢。这个题,就是说一个二叉树,你从右边看,你能看到的数有哪些(会被遮挡)其实抽象出来就是说。。。二叉树每层最右边的数有哪些。。那我们按层遍历一次就好了。/** * Definition for binary tree * struct TreeNode { * in...
分类:
其他好文 时间:
2015-04-12 20:37:02
阅读次数:
110
Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Populate each next pointer to point to its next right node....
分类:
其他好文 时间:
2015-03-30 11:18:59
阅读次数:
108
上一篇写了DFS的邻接矩阵和邻接表的,这篇再写一下BFS的
先大概讲一下BFS , 全名广度优先搜索,没有回溯和探查,逐层遍历,采用队列实现
先访问当前顶点v, 然后访问v的各个未被访问过的邻接顶点,然后在一次访问v的各个邻接顶点的未被访问的邻接顶点
代码实现如下 :
void BFS (Graph &G , int v ) {
int i , w , n = G.Number(); /...
分类:
编程语言 时间:
2015-02-07 17:29:05
阅读次数:
183
问题:给定一个二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。那么分层遍历如图的二叉树,正确的输出应该为:...
分类:
其他好文 时间:
2015-02-03 23:12:19
阅读次数:
485