摘要: 方法一算法思想:用后序遍历的方式遍历二叉树的每一个结点,在遍历到一个结点之前我们已经遍历了它的左右子树,只要在遍历每个结点的时候记录下它的高度,我们就可以一边遍历一边判断每个结点是不是平衡的。代码如下: 1 typedef struct BinaryTree 2 { 3 int data; ... 阅读全文
posted @ 2015-10-08 20:06 HOU_JUN 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 算法思想:由于二叉排序树的中序遍历可以得到一个有序的序列,因此,我们可以使用中序遍历进行求解。代码如下: 1 #include 2 using namespace std; 3 4 typedef struct BinaryTree 5 { 6 int data; 7 Binar... 阅读全文
posted @ 2015-10-08 17:35 HOU_JUN 阅读(2507) 评论(0) 推荐(0) 编辑
摘要: 知识:在先序遍历中,第一个结点就是二叉树的根节点;而在中序遍历中,根节点必然将中序序列分割成两个子序列,前一个子序列就是根节点的左子树的中序序列,后一个是根节点的右子树的中序序列。同样,给定后序序列和中序序列,按层次序列和中序序列可以也可以唯一确定一棵二叉树。但是,如果知道二叉树的先序序列和后序序列... 阅读全文
posted @ 2015-10-08 14:58 HOU_JUN 阅读(2812) 评论(0) 推荐(0) 编辑
摘要: 如果我们把二叉树视为一个图,父子几点之间的连线视为是双向的,我们可以把“距离”定义为来两结点之间边的个数。计算一个二叉树的最大距离有两种情况:情况A:路径经过左子树,通过根节点,再到右子树饿最深节点。情况B:路径不经过根节点,而是左子树或者右子树的最大距离路径,取其大者。只需要计算这两个情况的路径距... 阅读全文
posted @ 2015-10-08 13:57 HOU_JUN 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 二叉树左右子结点可旋转是指:可以把二叉树的左结点旋转成为右子树,把右子树的结点旋转成为左子树。这个与判断两棵二叉树的逻辑相同,只是要交叉判断。算法思路:在文章http://www.cnblogs.com/houjun/p/4860680.html的基础上,把判断代码改成如下:1 if(T1->d... 阅读全文
posted @ 2015-10-08 13:07 HOU_JUN 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 算法思想:先序遍历,递归实现。先判断根节点是否相等,然后在判断左右子树是否相等。代码如下 1 //二叉树节点结构体 2 struct BinaryNode 3 { 4 int data; 5 BinaryNode * lc; 6 BinaryNode * rc; 7 }*BT... 阅读全文
posted @ 2015-10-08 12:57 HOU_JUN 阅读(17871) 评论(0) 推荐(1) 编辑
摘要: 编写守护进程程序时需遵循一些基本规则,以防止产生不必要的交互作用,下面先说明这些规则,然后给出一个按照这些规则编写的函数deamonize. (1)首先,调用umask将文件创建屏蔽字设置为一个已知值(通常为0)。 (2)调用fork,然后是父进程exit。 (3)调用setsid创建一个新... 阅读全文
posted @ 2015-10-08 11:35 HOU_JUN 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 在看UNIX环境高级编程是,碰到一个头文件"apue.h",搜一下别人的帖子,其实apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。apue.h内容如下:[cpp]#ifndef_APUE_H#define_A... 阅读全文
posted @ 2015-10-08 10:42 HOU_JUN 阅读(1034) 评论(0) 推荐(0) 编辑