遍历

数据结构——二叉树的遍历

不羁岁月 提交于 2020-01-06 16:07:13
二叉树的先序遍历、中序遍历和后序遍历的递归算法,二叉树的非递归算法。 1、括号表示法创建二叉树 2、实现二叉树的递归遍历算法和非递归遍历算法(非递归算法选做),依次输出二叉树的先序、中序和后序遍历序列 3、二叉树的遍历遍历二叉树,输出结点值大于C的结点,而小于等于C的结点用*替代 4、遍历二叉树,输出结点值小于D的结点,而大于等于D的结点用*替代 main.cpp # include <malloc.h> # include <stdio.h> # include <iostream> using namespace std ; typedef char ElemType ; //Visit函数,对每个节点进行的访问 //需设置函数返回值类型 typedef void Status ; Status DispLargeThanC ( ElemType e ) //该函数输出树中大于C的字符 { if ( e > 'C' ) { printf ( "%2c" , e ) ; } else { printf ( "%2c" , '*' ) ; } } Status DispLessThanD ( ElemType e ) //该函数输出树中小于D的字符 { if ( e < 'D' ) { printf ( "%2c" , e ) ; } else { printf ( "%2c" ,

遍历目录

流过昼夜 提交于 2020-01-05 19:25:03
删除指定目录的其他文件(指定则文件保留) /*******************************************************************************/ 在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。在使用这三个函数前必须先包括以下两个头文件: #include <sys/types.h> #include <dirent.h> 函数原型 DIR* opendir (const char * path ); 功能 打开一个目录. 参数及返回值: 输入参数:文件或目录的绝对路径。 输出参数:无 返回值:在失败的时候返回一个空的指针,成功返回一个DIR*类型的指针句柄。 函数原型 struct dirent* readdir(DIR* dir_handle); 函数种类: 文件存取 返回值: dirent的结构类型, 内容说明 本函数用来读取目录(文件)。每次返回指定目录下的一个文件或者目录的dirent结构指针。 需要注意的是:当指定目录下的文件或者目录发生改变后,此函数会再次从头遍历目录,此点网上的函数说明还没有发现提出来的。 dirent结构体成员如下: struct dirent { long d_ino; /* inode number 索引节点 号 */ off_t

java并发:CopyOnWriteArrayList简单理解

╄→尐↘猪︶ㄣ 提交于 2020-01-05 18:02:30
Java集合的快速失败机制 “fail-fast” "fail-fast"是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能会产生 fail-fast 机制。 例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 ConcurrentModificationException 异常,从而产生fail-fast机制。 原因:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expectedmodCount值,是的话就返回遍历;否则抛出异常,终止遍历。 CopyOnWriteArrayList 传统的List在多线程同时读写的时候会抛出java.util.ConcurrentModificationException, Vector是线程安全的,但是由于使用了synchronized同步锁,导致同一时间内只有一个线程能访问,效率较低。 而CopyOnWriteArrayList是使用CopyOnWrite

python中实现可迭代对象的方法

一世执手 提交于 2020-01-05 07:08:18
当对元组,列表,字典,集合,字符串使用for循环语句的时候,可以依次拿到里面的数据,这样的过程称为遍历,也叫迭代。 想要让创建出来的类的实例对象可以迭代,也就是可以使用for来遍历,需要在类中实现__iter__方法,需要实现__next__方法。 迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器(__iter__),然后通过这个迭代器来依次(__next__)获取对象中的每一个数据. class Classmates(): def __init__(self): self.name = [] self.current_num = 0 def add(self, name): self.name.append(name) def __iter__(self): return self def __next__(self): if self.current_num < len(self.name): ret = self.name[self.current_num] self.current_num += 1 return ret else: raise StopIteration # 抛出异常停止遍历 classmate = Classmates() classmate.add("张三") classmate.add("李四") classmate.add("王五"

python-类对象的遍历操作

二次信任 提交于 2020-01-05 07:07:51
视频教程 https://study.163.com/course/courseLearn.htm?courseId=1005985001#/learn/video?lessonId=1053351122&courseId=1005985001 #类对象的遍历 #方式一: class Person: def __init__(self): self.age = 0 def __getitem__(self, item): self.age=self.age+1 if self.age >= 10: raise StopIteration('停止遍历') #抛出异常 return self.age d=Person() for i in d:#d 每次执行__getitem__获取它的返回值,遇到异常结束遍历 print(i) print('还在执行吗') #类对象的遍历 #方式二: class Person: def __init__(self): self.age = 0 def __getitem__(self, item): print('__getitem__函数') self.age=self.age+1 if self.age >= 10: raise StopIteration('停止遍历') #抛出异常 return self.age def __iter__

Java笔记--集合

喜夏-厌秋 提交于 2020-01-05 04:10:28
1、Java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组。 2、Java集合可分为Collection和Map两种体系: --Collection:1)Set:元素无序、不可重复的集合;2)List:元素有序,可重复的集合 --Map:具有映射关系"key/value对"的集合。 3、Collection接口:   |----List接口:     |----ArrayList、LinkedList、Vector   |----Set接口:     |----HashSet、LinkedHashSet、TreeSet Map接口:   |----HashMap、LinkedHashMap、TreeMap、HashTable(子类:Properties) 4、Collection接口中定义的常用方法: --add(Object o);//添加对象; --addAll(Collection col);//将集合col里面的元素全部添加到当前集合; --clear();//清空当前集合; --contains(Object o);//判断当前结合是否包含对象o; --containsAll(Collection col);//判断当前集合是否包含集合col中的所有对象; --isEmpty();//判断当前集合是否为空; --remove(Object o)

2019/7/26 node.js day03

℡╲_俬逩灬. 提交于 2020-01-05 02:55:08
# Node.js 第3天课堂笔记 ## 知识点 - 增删改查 - 登陆 - 注册 - 头像 + 服务端图片 + 水印 + 图片水印 - 找回密码 - 密码修改 - 模块系统 + 核心模块 + 第三方模块 + 自己写的模块 + 加载规则以及加载机制 + 循环加载 - npm - package.json - Express + 第三方 Web 开发框架 + 高度封装了 http 模块 + 更加专注于业务,而非底层细节 + 知其所以然 - 增删改查 + 使用文件来保存数据(锻炼异步编码) - MongoDB + (所有方法都封装好了) 2(新增功能比较多,甚至可能去除了某些功能).5(加入了新功能).0(修复bug,提升性能) * 大版本 * 一般是这些客户端软件、技术框架开发者比较理解的多 * 做网站很少涉及到版本的概念,网站的目的就是快 - art-template里面用的语法是jQuery吗, each什么的 我晕了 each,forEach, 遍历的全混了 + art-template 和 jQuery 一毛钱关系都没有 + each 是 art-template 的模板语法,专属的 + {{each 数组}} + <li>{{ $value }}</li> + {{/each}} 这是 art-template 模板引擎支持的语法,只能在模板字符串中使用 + $.each

五、树和二叉树

ぃ、小莉子 提交于 2020-01-05 00:34:10
(待完善) 基本概念: 树 二叉树 完全二叉树 满二叉树 完美二叉树 树的遍历 (二维的树转变为一维的线性表) 遍历的应用   查找树的叶子节点   求树高度(深度)   运算表达示树   利用遍历序列确定树 来源: https://www.cnblogs.com/makelin/p/12146288.html

Java入门(三)——集合概讲

不打扰是莪最后的温柔 提交于 2020-01-04 18:24:45
集合(或者叫容器)是Java的核心知识点,它有着很深的深度。我们这里不会设计多深,仅仅作为了解入门,深入了解请移步各种集合源码文章。好的,下面正是开始介绍... Java集合为何而生 我们知道,Java是一门面向对象编程语言,这也就意味着程序中存在着大量的对象。这个时候问题就来了,我们如何很好的存放和操作对象呢?如果你能明白这个问题,那么你就知道了“集合为何而生”这个问题的答案。 总结一句: Java给我们提供了工具(集合)方便我们去存放和操作多个Java对象 Java集合入门学习 Java集合的目的是方便操作多个对象,同时,它提供一系列的API来供我们操作。因此,在初学Java集合的时候我们更多的是 学习这些API的用法 。 对Java集合的API使用有一定了解之后,我们就应该从 面向对象 的角度去理解它。为什么会抽象出多个接口,以及每个接口有什么特征。 我们可以总结出几个常用的实现类,这几个常用的实现类我们必须知道它的数据结构是什么,什么时候使用这个类。 同时,你还需要学习和了解数据结构: 学完上面的内容后,我们基本掌握了常用集合的数据结构,也就知道了如何选择合适的集合容器去存储我们的对象。总之, 学完常见实现类的数据结构之后,对它们的使用场景也有了更加清晰的认识 。 Java集合类简介 Java集合是一个很庞大的知识点,话不多说,上图感受下: Java集合的