Java算法学习-----------------归并排序算法...
分类:
编程语言 时间:
2014-10-05 12:44:28
阅读次数:
185
理论:1.先(根)序遍历的递归定义:若二叉树非空,则依次执行如下操作:⑴ 访问根结点;⑵ 遍历左子树;⑶ 遍历右子树。2.中(根)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴遍历左子树;⑵访问根结点;⑶遍历右子树。3.后(根)序遍历得递归算法定义:若二叉树非空,则依次执行如下操作:⑴遍...
分类:
其他好文 时间:
2014-10-04 19:45:37
阅读次数:
146
问题描述:
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。
写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。测试用的树:
n1
/ ...
分类:
其他好文 时间:
2014-10-04 11:05:26
阅读次数:
372
把三个二叉树遍历的题放在一起了。递归写法太简单,就不再实现了,每题实现了两种非递归算法。一种是利用栈,时间和空间复杂度都是O(n)。另一种是借助线索二叉树,也叫Morris遍历,充分利用树中节点的空指针域。先序:Binary Tree Preorder TraversalGiven a binary...
分类:
其他好文 时间:
2014-10-03 23:07:55
阅读次数:
341
首先明白两个概念:
1. 深度遍历包括前中后序遍历三种;
2. 广度优先遍历就是层次遍历。
PS:
前中后序遍历,如果使用递归遍历,都很简单易理解;
如果使用非递归方式,首先想到的就应该是使用栈结构来控制整个过程,因为递归也是利用栈来实现的;
前中后序遍历的非递归方式中,后序遍历的非递归方式相比较而言,略复杂。...
分类:
其他好文 时间:
2014-10-02 12:39:03
阅读次数:
301
#includevoid print_partition(int n){ int i=1; int m=1; int h=1; int t,r; int a[n+1]; for(;i=r){a[++h]=r;t-=r;} if(t==0)m=...
分类:
其他好文 时间:
2014-10-01 01:10:00
阅读次数:
247
一个数组有n个元素,假如前面n-1个元素已经排序好了,那么把第n个元素插入到前面n-1个元素,使得数组有序排列,就是插入排序了。
至于n-1个元素如何已经先排序好,那么我们可以假设前面n-2个元素已经排序好,把第n-1个元素插入到前面n-2个元素。
依次类推,直到只剩下一个元素,也就是第一个元素。排序完成。
代码如下:
#include
using namespace std;
...
分类:
其他好文 时间:
2014-09-30 09:28:52
阅读次数:
192
序列前9项为:0, 1, 1, 2, 3, 5, 8, 13, 21 要注意非递归的话就是那一个变量帮助存储当前下一项的值,然后依次挪动两个指针往下即可注意如果n太大 会溢出 1publicstaticlongfib(intn){2if(n<=1)3returnn;4else5returnfib(n...
分类:
其他好文 时间:
2014-09-30 04:17:32
阅读次数:
145
#includeusing namespace std;void Merge(int a[],int b[],int first,int mid,int last)//合并两个有序数组{ int p=first,q=mid+1; int pos=first; while(p<=mid&&q<=las...
分类:
其他好文 时间:
2014-09-29 23:36:11
阅读次数:
487