遍历

二叉树的序列化和反序列化

走远了吗. 提交于 2019-12-11 16:54:45
便于存储将二叉树等数据结构转化为字符串的形式的磁盘中存储,使用的时候再由字符串转换为二叉树结构即可。下文以先序遍历为例实现二叉树的序列化及反序列化。 此外由于结点val的长度未知,避免歧义,在序列化的过程中在每一个节点结束位置都插入 !字符;对于空元素也应使用一特殊字符‘#’标记。 序列化过程使用的就是二叉树的先序遍历,不过遍历过程中需将空值也存储起来。实现代码如下: public static String serialization(TreeNode root) { StringBuilder sb = new StringBuilder(); preOrder(root, sb); return sb.toString(); } public static void preOrder(TreeNode root, StringBuilder sb) { if (root == null) { sb.append("#!"); return; } sb.append(root.val); sb.append('!'); preOrder(root.left, sb); preOrder(root.right, sb); } 反序列化过程实现思路如下: 首先利用分隔符‘!’将字符串切割成字符串数组strs。 并且利用字符串数组第一个元素创建头结点root(若其不为‘#’时)

golang 遍历查询beego数据库结果

岁酱吖の 提交于 2019-12-11 16:20:59
func (m *DecemberPrize) PrizeList(virtual int) ([]orm.Params, error) { o := orm.NewOrm() var maps []orm.Params if virtual == 1 { sql := "SELECT id,low_index,name,image,weight,num,virtual,if_reserve,stock,`left`,`top` FROM " + m.TableName() + " WHERE virtual=? and num>0 AND status=1 ORDER BY weight asc" _, e := o.Raw(sql, virtual).Values(&maps) return maps, e } else { sql := "SELECT id,low_index,name,image,weight,num,virtual,if_reserve,stock,`left`,`top` FROM " + m.TableName() + " WHERE virtual=? and num>0 AND status=1 ORDER BY weight asc" _, e := o.Raw(sql, virtual).Values(&maps) return maps,

jQuery——遍历数据的方式

断了今生、忘了曾经 提交于 2019-12-11 16:15:01
1. JS实现 : <script> var arr= ["1111","2222","3333","4444","5555"] function foreach(array) { for (var i = 0; i < array.length; i++) { var item = array[i]; alert(i+": "item); } } //调用 foreach(arr); </script> 2. Jquery对象的each方法 :仅用于遍历jQuery对象 <script type="text/javascript" src="js/jquery-3.4.1.js"></script> <script> var arr= ["1111","2222","3333","4444","5555"]; //jQuery对象调用遍历 $(arr).each(function(i,n) { alert(i+" = "+n); }); </script> 3. $.each方法: 可用于遍历 任何集合 ,无论是对象还是数组。对于数组,每次 回调方法 都会传递一个数组索引和一个对应的数组值(通过return false、true控制终止循环和跳出本次循环) <script> <script type="text/javascript" src="js/jquery-3.4.1

CAD关于得到所有标注样式操作(com接口c#语言)

夙愿已清 提交于 2019-12-11 12:15:32
下面代码遍历标注样式表,然后得到每个样式名称,c#代码如下: private void GetAllDimStyle() { MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase(); //返回数据库中的标注样式表对象 MxDrawDimStyleTable spDimStyleTable = database.GetDimStyleTable(); //创建一个遍历器 var spIter = spDimStyleTable.NewIterator(); // 得到所有标注样式名 string sRet = null; //移动当前遍历器位置 for (; !spIter.Done(); spIter.Step(true, true)) { //返回遍历器当前位置的记录 var spDimStyleTableRec = spIter.GetRecord(); //符号表记录名属性 var sName = spDimStyleTableRec.Name; if (sRet == null) sRet = sName; else { sRet = sRet + "," + sName; } } MessageBox.Show(sRet); } 效果展示: 来源: https://www.cnblogs.com

二叉树遍历,查找,删除节点,线索化

霸气de小男生 提交于 2019-12-11 10:41:30
二叉树很明显就只有两个分叉,及左子节点和右子节点,这里主要是说明二叉树的遍历,查找节点和删除节点,线索化这几种。 遍历分为前序遍历,中序遍历,后序遍历这三种,前,中,后是相对中间节点来说的,及前序比那里是先中间节点,在左边节点,最后右边节点。 下面是前序遍历代码: public void preOrder(){ System.out.println(this); if(this.left!=null) { this.left.preOrder(); } if(this.right!=null) { this.right.preOrder(); } } 这是节点的前序遍历,在二叉树里面遍历还需要判断给的节点是不是空: public void preOrder() { if(this.root!=null) { this.root.preOrder(); //调用上面的preOrder方法。 }else { System.out.println("二叉树为空"); } } 中序和后序遍历和上面差不多,就是输出顺序不一样,可以自行参照对比。 查找节点:也分为前序遍历查找。中序遍历查找,后序遍历查找。 前序遍历查找思路:就是按照中间节点,左子树,右子树的顺序遍历找到相同节点就赋值,然后退出,没找到就返回一个空节点。 代码如下:也分为节点的遍历和二叉树的遍历,二叉树的遍历要判断是否为空 /

jQuery--summary[7]

烂漫一生 提交于 2019-12-11 04:24:22
jQuery 遍历 什么是遍历? jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止。 下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。 图示解析: < div > 元素是 < ul > 的父元素,同时是其中所有内容的祖先。 < ul > 元素是 < li > 元素的父元素,同时是 < div > 的子元素 左边的 < li > 元素是 < span > 的父元素, < ul > 的子元素,同时是 < div > 的后代。 < span > 元素是 < li > 的子元素,同时是 < ul > 和 < div > 的后代。 两个 < li > 元素是同胞(拥有相同的父元素)。 右边的 < li > 元素是 < b > 的父元素, < ul > 的子元素,同时是 < div > 的后代。 < b > 元素是右边的 < li > 的子元素,同时是 < ul > 和 < div > 的后代。 //祖先是父、祖父、曾祖父等等。后代是子、孙、曾孙等等。同胞拥有相同的父。 遍历 DOM jQuery 提供了多种遍历 DOM 的方法。

Seven

☆樱花仙子☆ 提交于 2019-12-10 22:18:02
/*有一个Map集合里面存储的是学生的姓名和年龄,内容如下{张三丰=21, 灭绝师太=38, 柳岩=28, 刘德华=40, 老鬼=36, 王二麻子=38}a.将里面的元素用两种遍历方式打印到控制台上b.将老鬼的年龄改成66c.将年龄大于24的学生姓名,存入到项目下的 temp\\student.txt中 */public class Seven { public static void main(String[] args) throws IOException { //创建hashMap集合 HashMap<String,Integer> hm = new HashMap<>(); hm.put("张无忌",21); hm.put("赵敏", 20); hm.put("周芷若", 19); hm.put("柳岩", 28); hm.put("刘德华", 40); hm.put("金毛狮王", 48); hm.put("老鬼",36); hm.put("王二麻子",38); //遍历方式1: Set<Map.Entry<String, Integer>> entries = hm.entrySet(); for (Map.Entry<String, Integer> entry : entries) { String key = entry.getKey(); Integer

数据机构学习(链表)

血红的双手。 提交于 2019-12-10 22:15:22
链表: 以节点的方式来存储 每个节点包含data域,next域:指向下一个节点 各个节点不一定连续存储 分为带头节点和不带头节点(根据实际需求确定) head节点: 不存放具体数据,作用就是表示单链表的头 //单链表 public class SingleLinkedListDemo { public static void main(String[] args) { //创建几个节点 HeroNode hero1 = new HeroNode(1, "萧炎", "炎帝"); HeroNode hero2 = new HeroNode(2, "叶凡", "叶天帝"); HeroNode hero3 = new HeroNode(3, "韩立", "韩老魔"); HeroNode hero4 = new HeroNode(4, "石昊", "荒天帝"); //创建链表 SingleLinkedList singleLinkedList = new SingleLinkedList(); //加入 // singleLinkedList.add(hero1); // singleLinkedList.add(hero2); // singleLinkedList.add(hero3); // singleLinkedList.add(hero4); //加入按照编号的顺序(自动排序)

最大子序和

半世苍凉 提交于 2019-12-10 22:02:09
——数组,分治算法,动态规则 题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入 : [ - 2 , 1 , - 3 , 4 , - 1 , 2 , 1 , - 5 , 4 ] , 输出 : 6 解释 : 连续子数组 [ 4 , - 1 , 2 , 1 ] 的和最大,为 6 。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 解法 动态规则的思路 动态规则的是首先对数组进行遍历,当前做大连续子序和为sum,结果为ans 如果 sum>0,则说明sum对结果有增益效果,则sun保留并加上当前遍历数字 如果sum<=0.则说明sum对结果无增益效果,需要舍弃,则sum直接更新为当前遍历数字 每次比较sum和ans的大小,将最大的位置为ans,遍历结束返回结果 代码 class Solution { public int maxSubArray ( int [ ] nums ) { int ans = nums [ 0 ] ; int sum = 0 ; for ( int num : nums ) { if ( sum > 0 ) { sum += num ; } else { sum = num ; } ans = Math . max ( ans , sum ) ; }

select、poll、epoll优缺点

别等时光非礼了梦想. 提交于 2019-12-10 21:14:48
select、poll、epoll都是IO多路复用。 I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 select的缺点 每次调用select,都需要将进程加入到所有fd的等待队列,每次唤醒都需要从每个队列中移除; 每次都需要将fd集合从用户态传递给内核;进程被唤醒后,程序并不知道哪些fd就绪,还需要再比遍历一次; 因为遍历开销较大,默认只能监视1024个fd poll poll 和 select相似,只是fd集合的方式不同,但是解决了select文件描述符的最大上限 epoll(eventpoll) 功能分离, 将等待队列和阻塞进程分开。 create-创建结构体(eventpoll),ctl-增删fd, wait-唤醒 新增就绪队列 内核维护一个就绪列表,引用就绪的fd,就能避免一次遍历 epoll工作方式:创建eventpoll, 通过ctl增删fd,若fd就绪后,调用回到函数将就绪fd放入就绪列表中,并唤醒在wait中进入睡眠的进程(select 和poll