问题:
如上二叉树,请按层遍历,每层一行,遍历结果如下:
1
2 3
4 5 6 7
8
我的思路:
在按层遍历之前,我们可以思考一下,如果我们从根结点看起,通过根节点,我们就能找到下一层中同层的所有的节点,得到下一层所有的节点,那么就能找到下下一层同层的所有的节点,以此类推,就能实现按层遍历了,但是由于树的原因,我们不可能直接按层遍历,所以得找到一个数据结构,能保存同层中不能一次性访问的节点,经过分析,符合先进先出条件,那么队列就当仁不让的站出来啦!
上面一段分析了实现按层遍历,但是题目条件是需要一层一行的输出,因此我们就需要适时的给输出加上换行。我的想法是能不能在队列中保存节点信息的同时,稍带的把节点所在层数也保存起来,只要遇到层数改变,就在输出前加上回车,不是就实现了按层输出,每层一行的要求吗?是的!
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define SQU_MAX 100
//定义二叉树节点
struct BinaryTreeNod
继续阅读 >>
周攀
17/03/07 23:31:06
最近在纠结一个问题:为什么我们在项目中的数据通信时使用JSON,JSON有什么优点呢?
下面是我的简单总结:
与XML相比,JSON更加的简洁,我们可以一眼就看出其中的内容,方便检查排错
JSON更加轻量级,不管是编写,传输,还是解析都更加高效
JSON在传输过程中采用了压缩技术,更加的节省宽带
众多的语言支持,如javascript,python,C,C++等主流语言都支持
想仔细看JSON的优点,及JSON与XML区别,详见:http://www.jb51.net/article/69598.htm
作者:IT_DREAM_ER 发表于2017/3/6 14:28:05 原文链接
阅读:2 评论:0 查看评论
继续阅读 >>
周攀
17/03/06 14:28:05
集群监控管理系统
设计说明
名称:集群监控管理系统
英文名:SystemMonitor
Logo:
物理架构:C/S架构,即客户端,服务器型架构
开发语言:Python3.4,Django1.8.x
开发平台:CentOS 7.2
最新版本:v0.1
项目源码:https://github.com/dreamer2018/SystemMonitor
主要功能简述:
客户端:
获取主机的系统资源,主要包括:
内存使用率
CPU占用率
磁盘I/O
磁盘空间使用率
网络延迟
主机端口
在线用户信息
客户端收集这些信息,并将这些信息发送至服务器
服务器端:
获取到客户端数据后,进行处理计算,策略匹配,对于异常数据通过发送邮件的方式进行告警
逻辑架构:
基础逻辑架构图(2.0版):
模块-类对应图(2.0版)
网络架构:
网络拓扑架构图(2.0版):
开发接口(2.0版):
继续阅读 >>
周攀
17/02/27 23:10:38
最近在完善一个项目,由于展示界面使用的是django,但是却想解耦合,后台与展示界面并没有直接使用django的ORM,于是就使用了SQLAlemchy来做后端数据收集的数据库接口,但是网上说,SQLAlemchy的性能并不好,今天,就想着来测试一下其性能瓶瓶颈在哪儿,下面是过程记录:
查询测试
测试代码如下:
def pymsql_select():
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='test')
cursor = conn.cursor()
for i in range(1, 10000):
sql = "select count(*) from informations_alarm;"
cursor.execute(sql)
print(cursor.fetchone())
def alchemy_select():
engine
继续阅读 >>
周攀
17/02/27 12:20:13
最近在写一个集群监控的项目,但是感觉全都是自己想的,没有参考其他人的设计思想方法,于是就在知网上搜了一下,发现了几个论文挺好的,但是下载下来是CAJ格式的文件,我一般都是在linux环境下工作的,发现Linux无法打开CAJ文件,而且CAJViewer只有windows版的,于是想着转成PDF,不就可以在Linux下查看了吗?在网上搜了N多方法,终于找到一个可以实现,下面分享一下:
1. 先切换到windows下,安装CAJViewer软件
2. 成功安装CAJVIewer后,打开文件
3. 点击左上角打印机按钮,或使用快捷键Ctrl+p
4. 出现以下弹窗:
5. 选择其中的发送至OneNote####,依据本机装的office版本不同而不同
6. 打开office里的 OneNote软件
7. 点击确定按钮
8. 然后就开始转化,期间可能比较慢,请耐心等待,切记保持OneNote打开状态
9. 在OneNote创建一个新分区
10. 转换完成后,就可以在OneNote里弹出如下弹窗:
11. 选择新
继续阅读 >>
周攀
17/02/26 16:23:03
今天在整理find命令的时候,突然对这两个的区别产生了疑惑,下面详细解释一下:
ctime : ChangeTime 既:改变时间
mtime:ModifyTime 既:更改时间
这下出问题了,到底有啥区别?看下面例子
[zhoupan@DesktopComputer /tmp/test 16:47:48 ]$ touch 1.txt
[zhoupan@DesktopComputer /tmp/test 16:47:53 ]$ stat 1.txt
File: ‘1.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 80ch/2060d Inode: 135319815 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zhoupan) Gid: ( 1000/ zhoupan)
Access: 2017-02-25 16:47:53.993566804 +0
继续阅读 >>
周攀
17/02/25 17:01:08
今天,来分享一下find命令的使用方法。
find: 与其他的查找命令相比,如locate,find的查找是实时的,精确的查找命令,但其缺点是查找速度慢。
find使用方法基本可以总结为:
find 查找路径 查找标准 处理动作
查找路径:你想要查找的文件路径,默认为当前路径
查找标准:查找的条件,默认为查找路径下的所有文件
处理动作:查找到文件后要做的动作,默认为显示
查找标准:
-name FILE :根据文件名FILE查找
*:代表任意长度字符
?:任意单个字符
[ ]:括号里面的字符中的任意一个
iname:不区分大小写
regex PATTERN:基于正则表达式PATTERN进行查找
user:根据文件属主查找
group:根据文件属组查找
uid:根据文件属主的uid查找
gid:根据文件属组的gid查找
nouser:查找没有属主的文件
nogroup:查找没有属组的文件
type:根据文件类型查找
f:普通文件
d:目录
c:字符文件
l:链接文件
s:套接字文件
p:管道文件
b:块设备文件
-size:根据文
继续阅读 >>
周攀
17/02/25 16:42:49
自己搭了一个IDEA的激活服务器:http://jetbrains.dreamchasinger.cn
如服务不可用,或涉及侵权或违法,请发邮件至:zhoupans_mail@163.com
作者:IT_DREAM_ER 发表于2017/2/20 18:41:17 原文链接
阅读:1 评论:0 查看评论
继续阅读 >>
周攀
17/02/20 18:41:17
用vim快两年了,但是直到最近才真正将vim的全部用法看完,并自己认真实践了一下,下面是我总结出的vim用法,与君分享。
Vim常用功能总结
打开文件
1) vim filename :打开filename文件。
2) vim + # filename : #号代表任意非负整数,打开文件filename,并跳至#行。
3) vim + filename :打开文件filename,并跳至最后一行。
4) vim + /pattern :打开文件并定位至第一次被pattern匹配的行。
编辑文件、
vim模式
编辑模式
输入模式
末行模式
vim模式转换
编辑 –> 输入
i: 在当前光标前,转为输入模式。
a: 在当前光标所在字符后,转换为输入模式。
o: 在当前光标下一行,新建一行,并转为输入模式。
I: 在当前光标所在行首,并转为输入模式。
A: 在当前所在行行尾,转为输入模式。
O:在当前所在行的上一行,新建一行,并转为输入模式。
输入–>编辑
ESC键
编辑 –>末行
继续阅读 >>
周攀
17/02/20 17:22:57
面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。
在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。
本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了解这些算法的原理,还需程序员们花些功夫。
1.String/Array/Matrix
在Java中,String是一个包含char数组和其它字段、方法的类。如果没有IDE自动完成代码,下面这个方法大家应该记住:
toCharArray() //get char array of a String
Arrays.sort() //sort an array
Arrays.toString(char[] a) //convert to string
charAt(int x) //get a char at the specific index
length() //string length
lengt
继续阅读 >>
周攀
17/02/15 09:30:43