题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如:
10
/ \
5 12
/ \
4 7
输入整数22,输出如下路径:
10 12
10 5 7
解:就是最简单的先序遍历,只不过要记录路径,可以使用数组,我这里用的stl::vector。
注意left和right遍历后,要回退当前结点在path中状态。
算法:
v[......]
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如:
10
/ \
5 12
/ \
4 7
输入整数22,输出如下路径:
10 12
10 5 7
解:就是最简单的先序遍历,只不过要记录路径,可以使用数组,我这里用的stl::vector。
注意left和right遍历后,要回退当前结点在path中状态。
算法:
v[......]
int array[m][n];
这个二维数组,可以堪称是m个长度为n的一维数组。
在内存中排列的方式是[0][1]..[n-1] [0][1]...[n-1]....一共m组这样的。
在访问时,array[m][n] = *(*(array+m)+n),对N维的数组取值时要用到N个*。
参考了这个:http://blog.csdn.net/hai836045106/article/details/6729756[......]
1、const int a和int const a什么区别?
答:没区别,这个我是知道的。
2、const int*a和int const* a什么区别?
答:还是没区别,即*修饰离变量a最近,都是表示指针是常量,且所指向的对象也是常量?
3、const int* a和int* const a什么区别?
答:完全不同,前者见2,后者是a是常量不能改指向,但指向的对象可以更改的。
类似的把指针换成&引用,同理。[......]
发现自己学的最水的一门就是本科的数据结构了,我现在连冒泡排序都写不出来,sign。。。从今天开始重读数据结构。
冒泡排序:
对于有N个数的数组:
(1) 第1趟从第1个开始,如果arr[j] >= arr[j+1],swap(arr[j], arr[j+1])。本趟的结果是将最“大”的放在最后的位置上。
(2)第2趟仍然从第1个开始,执行大则swap但只执行到n-1的位置上,即次大的放到n-1上。
以此类推……
注:可优化,如果某一轮没有任何swap,说明已经有序了[......]
其实就是随机洗牌。
Knuth给过一个算法,为代码如下:
注意:随机数不是1~n,而是i~n!!
For i = 1 to n
Pick a random integer j from i to n
Swap A[i] and A[j]
关于为什么如此,吾等码农就不了解了,等大神来证明吧……[......]