二叉树的三种遍历递归法和非递归法(前序、中序、后续)

二叉树的前序遍历:根->左->右1、递归方法:思路:我们知道递归就是将一个大问题不断分成子问题进行处理,当达到递归终止条件时,跳出。因此在前序遍历中我们把每一个节点分成三部分,即:根节点、左子树、右子树。例如下面这个二叉树递归过程:转化成代码代码:void PrevOrder() ...

2017-05-29 12:51:16

阅读数 244

评论数 0

走迷宫问题:回溯法和递归法

问题描述:给一迷宫表个和入口位置,找出并打印出从入口到出口的路径注意:迷宫表格我们可以用一个二维数组来表示,但是如果用二维数组表示,将唯一固定,迷宫趣味性大大降低并代码长度增大;因此,我们最好是将迷宫表格存储在一文件中,在实现时再从文件中读取;采用模板来实现可实现复用性;设计分析:1、我们可沿着入...

2017-05-25 15:44:48

阅读数 2061

评论数 0

树与二叉树初识

树相关的一些概念。 树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。 节点:结点包含数据和指向其它节点的指针。 根节点:树第一个结点称为根节点。 结点的度:结点拥有的子节点个数。 叶节点:没有子节点的节点(度为0)。 父子节点:一个节点father指向...

2017-05-25 12:13:08

阅读数 218

评论数 0

fork()函数和linux进程号

pid_t 类型——定义进程号类型; 实际类型:我们可找到其定义: 1、在centos6.5的/usr/include/sys/type.h中可找到其定义: 总结:pid_t 就是 int 型 2、fork()函数创建子进程       需要的头文件:#include和#...

2017-05-25 10:08:06

阅读数 298

评论数 0

模拟实现队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 模拟代码: #include using namespace std...

2017-05-24 11:09:25

阅读数 510

评论数 0

队列和栈相关面试题总结

1、实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)?? 分析:      出栈和入栈根据栈自身提供的接口不难实现,而返回最小值,我们知道遍历一次栈即可找到最小值,但是对栈的操作只能在栈顶,因此,要遍历势必要改变栈的状态,而且还要求时间复杂度为...

2017-05-23 23:49:51

阅读数 355

评论数 0

栈的模拟实现

#include using namespace std; #include template class Stack { public: Stack() :_arr(NULL) ,_size(0) , _capacity(0) {} void Push(const T&am...

2017-05-23 20:44:22

阅读数 323

评论数 0

智能指针发展

智能指针就是智能/自动化的管理指针所指向的动态资源的释放。并且可以向指针一样使用。1、早期auto_ptr—是一种失败的设计,有设计缺陷为了解决对象中指针的重复释放,采用管理权转移的方式。即在解决对象的赋值、拷贝构造时,比如:a = b;将a的地址空间释放,然后将b.ptr的指针赋给a.ptr,最...

2017-05-11 20:03:06

阅读数 205

评论数 0

c++模板之萃取

假如,我们要设计一个_Copy的模板函数。我们为了提高效率采用memcpy,可以这样写:template<typename T> T* _Copy(T* dest, T* src, size_t n) { memcpy(dest, src, sizeof(T)*n); ...

2017-05-04 11:28:36

阅读数 649

评论数 0

进程之task_struct

进程可以把进程当成一组元素组成的实体,进程的两个基本元素程序代码和与代码相关的数据集。假设处理器开始执行这个程序代码,且我们把这个执行实体称为进程。那么,在程序执行时,任意给定一个时间,进程都可以唯一的被表征为以下元素:1、标识符:跟这个进程相关的唯一标识符,用来区别其他进程2、状态:进程此时的状...

2017-05-03 19:12:36

阅读数 257

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭