- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 判断二叉树是不是完全二叉树
完全二叉树定义:除最后一层外,其它各层的结点数都达到最大个数,并且最后一层所有的结点都连续集中在最左边,这就是完全二叉树。定义形象化:(1)除最后一层外,其它各层的结点数都达到最大个数如果一个结点的孩子数小于2,那这个结点一定在最后两层中的某一层,否则一定不是完全二叉树。因为,除最后一层,其他各层构成满二叉树。那么如果一个结点孩子数小于2,那它的后续结点必须是叶子结点。(2)最后一
2016-04-24 23:19:50 564
原创 二叉树翻转
原二叉树:翻转后的二叉树:主程序代码:思路很简单,就交换左右孩子的指针。void InvertTree(TreeNode *root){ if(NULL == root) return; std::swap(root->left, root->right); InvertTree(root->left); InvertTree(roo
2016-04-20 16:03:47 283
原创 判断一棵树是不是AVL树
这里的AVL树指的是,在BST树的基础上,满足任意结点的平衡因子绝对值小于2判断主程序:bool JudgeAvl(TreeNode *root, int min, int max, int &deepth){ if(root == NULL) return true; if(root->val val > max) return false; //主要判断符不
2016-04-20 15:29:47 1498
原创 求二叉树的最后一层
二叉树表示如下:二叉树前序序列化表示如下:1 2 4 8 -1 -1 9 -1 -1 5 10 -1 -1 11 -1 -1 3 6 -1 12 -1 -1 7 -1 -1-1代表左右孩子为NULL的情况,使用前序序列构建二叉树(递归或非递归)。二叉树结构表示如下:struct TreeNode{ TreeNode(int value):left(NULL)
2016-04-20 15:11:55 286
原创 二叉树递归、非递归求深度
(一)递归求深度int TreeDeepth_Recur(TreeNode *root){ if(root == NULL) return 0; int left_deepth, right_deepth ; left_deepth = TreeDeepth_Recur(root->left); right_deepth = TreeDeepth_Recur(r
2016-04-19 23:08:55 300
原创 判断一棵树是不是二叉搜索树
(一)递归判断递归判断时,在结点值为整型时,必须指定初始最小值为INT_MIN,最大值为INT_MAX,每次递归时,传入上一层的结点值最为判断依据。bool JudgeBst_Recur(TreeNode *node, int min, int max){ if(node == NULL) return true; if(node->val val > max) retur
2016-04-19 21:17:22 373
原创 二叉树后序递归、非递归遍历
二叉树如下所示:二叉树的前序序列化表示如下:1 2 4 7 -1 -1 -1 5 -1 8 -1 -1 3 6 -1 -1 -1 -1代表左右子树为NULL的情况,使用前序序列构造二叉树。二叉树的结构体定义如下:struct TreeNode{ TreeNode(int value):left(NULL),right(NULL),val(value){
2016-04-19 19:50:09 270
原创 二叉树中序递归、非递归遍历
二叉树如下:二叉树前序序列化表示如下:1 2 4 7 -1 -1 8 -1 -1 5 -1 -1 3 6 -1 -1 -1-1代表左右子树为NULL的情况,使用前序序列构造二叉树。二叉树结构体表示如下:struct TreeNode{ TreeNode(int value):left(NULL),right(NULL),val(value){ } TreeNod
2016-04-19 19:02:29 207
原创 二叉树前序建立(递归、非递归),前序遍历(递归、非递归)
二叉树如图所示:二叉树结构定义如下:struct TreeNode{ TreeNode(int value):left(NULL),right(NULL),val(value){ } TreeNode *left; TreeNode *right; int val;};二叉树前序序列化表示如下:1 2 4 -1 -1 5 7 -1 -1 -1 3
2016-04-19 14:46:17 391
原创 读<<effective C++>>的疑惑总结
代码编译环境:操作系统:Red Hat 5.6 i386 编译器: GCC 4.1.2条款05:了解c++默默编写并调用哪些函数如果某个base classes将copy assignment操作符声明为private,编译器将拒绝为其派生类生成一个copy assignment??#include namespace contestjia{ class
2016-03-26 21:10:35 238
原创 数组中只出现一次的数字
剑指offer面试题40:一个整型数组里除了连个数字之外,其他的数字都出现了两次。请写出程序找出这两个只出现一次的数字。时间复杂度O(n),空间复杂度O(1).解法是一样的,只是觉得找最右边第一个比特1的时候,可以有更简单的方法。题目是整型数组,因此也可以是负数,对一个负数进行右移操作,这可能出现错误。#include int main(){ int N[ ] = {
2016-03-14 00:03:40 690
原创 自己实现atof
基本想法:例:123.456E1234,其中小数点前面算整数部分,小数点到E是小数部分,E后面的是有效数部分。#include #include #include #include using std::string;using std::ifstream;#define INTEGER 0#define FRACTION 1#define SIGNIF 2float
2016-03-10 22:10:46 344
原创 一条shell统计当前目录下的文件行数
初级版本:(1)find ./ -name "*.h" -o -name "*.c" | xargs wc -l | awk 'END{print $1}'(2)find ./ -name "*.h" -o -name "*.c" | xargs awk 'BEGIN{count};{count++;} END{print count}'(3) find ./ -name "*
2015-09-13 00:56:11 629
原创 用一个循环输出99表~~~
题目来源如下:http://bbs.tinygroup.org/thread-1487-1-1.html具体要求:1. n可以是任意正整数,只要N的平方不要溢出都可以2. 一行一行print结果的无效3. 不允许出现if,switch,?:语句及判断语句的变体,也就是只允许循环变量做条件比较以确定循环次数,不允许其它变量进行条件判断5. 不允许出现异常6. 循环语句中只
2015-09-10 22:20:10 438
原创 非阻塞connect的测试
工作在ET模式的epoll,描述符基本都是设置为非阻塞(nonblocking)的。阻塞的connect,最多可以等待75s(第二次握手syn+ack一直没到来),效率很低。对于非阻塞connect,调用函数后,通常返回-1,但并不代表出错,还要检查errno值,如果是115(EINPROGESS),则表示连接正在进行中。但如果对端的端口一直没打开,则connect后,errno还是115,不会是
2015-06-28 14:08:30 592
原创 Linux下epoll事件的触发条件
针对TCP连接的epoll触发条件,UDP没经过测试:触发EPOLLIN的条件: (1)只注册EPOLLIN: 只在内核缓冲区由不可读变成可读的时候触发。 (2)只注册EPOLLOUT: 不会触发。 (3)同时注册EPOLLIN |
2015-06-28 12:51:06 851
原创 数据包离开主机的过程~~~
这片文章不是从内核的角度来分析数据包的处理流程,所以,对于想要从内核了解的人会失望了,本文的目的等同于基础知识的普及,能够让大家对网络书上的知识有一个现实的认识。主机在发送数据包的时候,是从协议栈的上层到下层依次封装数据包(网络基础知识可以参看这本书>)。现在,以一个ICMP数据包的发送过程为例来讲解,在Packet Tracer中模拟ICMP通信,网络结构图如下所示:其中PC0的配置
2015-01-06 19:29:02 420
原创 Linux网络环境下的ARP攻击
ARP攻击的基本原理很简单,通过百度百科的知识就能了解。其主要原理是通过ARP包,进行主机或网关的欺骗。我将ARP欺骗大致分为两类:(一)欺骗主机:通常是伪装成网关(不想让欺骗主机上网)或局域网的某一台机器(不想让欺骗主机与这台主机进行通信),给被欺骗主机发送ARP响应包。(二)欺骗网关:通常是伪装成某一台机器,给网关发送ARP响应包,这样会导致在以后的通信中,网关发回来的数据包到达不
2015-01-06 18:20:42 586
原创 跨交换机VLAN通信 / 单臂路由VLAN通信
最近了解了一下VLAN的知识,根据现有设备搭建了如下网络环境,在此记录一下学习的过程。其中使用的两台交换机型号为H3C S5120-28P-SI,路由器的型号为H3C MSR 36-40,其中交换机为三层交换机,支持路由功能,并且交换机和路由器都支持IPv6的功能。要求如下:(1) IPv4: 10.1.2.0 / 24网段 与 172.16.17.0 / 24 网段可以互相ping
2015-01-06 16:47:59 799
原创 用vim打开一个文件时,自动给文件头部添加注释信息
给源码文件头部添加注释信息,有很多方法,这里介绍一种在文件打开时,自动给文件添加头部信息的方法,网上很多文章,都只能在文件打开后,通过映射快捷键到指定函数来添加头部信息,本文章中的部分函数,有参考此博客http://www.cnblogs.com/mfryf/p/3643349.html,但具体思路是自己所想。 具体.vimrc中的配置代码如下: """""""""""""""""
2014-12-29 20:29:40 769 1
转载 sizeof()用法汇总
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为
2014-09-13 09:17:08 276
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人