C#完成的二叉树递归和非递归的遍历。BTreeNode是节点类,Visited是ENUM类型的表示当前节点是否被访问以及被访问的是左孩子还是右孩子(非递归后序遍历用到)
BTree是二叉树类,preVisit,InVisit,BackVisit分别是递归的前中后序遍历,preVisit1,InVisit1,BackVisit1分别是 非递归的前中后序遍历...
分类:
其他好文 时间:
2014-09-12 11:57:33
阅读次数:
190
图的表示:连接矩阵,连接链表。图的遍历:dfs(递归、非递归),bfs.连接矩阵下各种遍历:import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;impo...
分类:
其他好文 时间:
2014-09-11 17:03:02
阅读次数:
289
这三种常见的扁历方式,是考研面试等场合经常遇到的,在此做一个总结。
1、前序遍历比较简单:用指针p指向根节点,若p!=NULL且栈非空,则直接访问节点,并将节点的右孩子入栈,同时指针p向左孩子移动。
2、中序扁历:用指针p指向根节点,若p!=NULL且栈非空,则当前节点入栈,同时指针p向左孩子移动,出栈是指针指向当前节点的右孩子。
3、后序扁历相对复杂:需要设置一个辅助栈,标识该节点是否是第...
分类:
编程语言 时间:
2014-09-09 18:26:19
阅读次数:
211
1 #include 2 using namespace std; 3 4 typedef struct LNode{ 5 int data; 6 LNode* next; 7 }LNode; 8 //非递归方法, 9 LNode* reverse(LNode* head)10 ...
分类:
其他好文 时间:
2014-09-09 17:53:29
阅读次数:
216
1,什么是栈溢出?由于栈一般默觉得1-2m,一旦出现死循环或者是大量的递归调用,在不断的压栈过程中,造成栈容量超过1m而导致溢出。2,解决方式:方法一:用栈把递归转换成非递归通常,一个函数在调用还有一个函数之前,要作例如以下的事情:a)将实在參数,返回地址等信息传递给被调用函数保存; b)为被调用函...
分类:
其他好文 时间:
2014-09-07 22:21:15
阅读次数:
208
记得在我们最开始学习C语言的时候,每当讲到递归,无论是课本上,还是老师,都会给出两个经典例子的递归实现,其中一个就是阶乘,另外一个就是Fibonacci(中文多译成斐波那契)数列了。用递归方法计算阶乘的代码如下://递归计算阶乘long Factorial(int n){ if (n 1) { r....
分类:
其他好文 时间:
2014-09-05 23:46:32
阅读次数:
252
二叉树的先序、中序、后序、层次遍历的递归和非递归解法
package tree;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class TreeTraverse {
/**
* 先序递归
* @param root
*/
public stat...
分类:
其他好文 时间:
2014-09-05 16:12:21
阅读次数:
249
//中序遍历int inorder_tree_walk(BinTreeNode * root){ if(root == NULL){ return -1; } stack s; BinTreeNode * p = root; while(!s.empty(...
分类:
其他好文 时间:
2014-09-05 14:15:11
阅读次数:
142
前序遍历二叉树int preorder_tree_walk(BinTreeNode * root){ if(root == NULL){ return -1; } stack s; BinTreeNode * p = root; while(!s.empt...
分类:
其他好文 时间:
2014-09-05 14:10:51
阅读次数:
170
1. 快排 详见之前博文快速排序算法。 2. 堆排序 详见之前博文非递归方法的堆排序实现。 3. 简单排序(冒泡排序、选择排序和插入排序) 代码如下: #include #include #include #define N 20static void show(int *arr, int len)...
分类:
其他好文 时间:
2014-09-05 14:08:51
阅读次数:
198