遍历

数据结构TIRE 树实际应用----过滤禁词

二次信任 提交于 2020-04-08 12:27:27
二叉树也是 递归 定义的,其结点有左右子树之分: (1) 完全二叉树 ——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有 叶子结点 ,并且叶子结点都是从左到右依次排布,这就是 完全二叉树 。 (2) 满二叉树 ——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。 (3) 深度——二叉树的层数,就是高度。 1、二叉树的存储结构 (1)顺序存储结构(适合完全二叉树和满二叉树) (2)链式存储结构(适合非完全二叉树) 2、二叉树的遍历 (1)递归遍历(中序遍历、先序遍历、后序遍历) (2)非递归遍历(利用堆栈实现) 3、二叉树的拓展 (1)线索二叉树(在节点空指针域存放前驱和后继节点的指针,加上线索标志域区分是线索指针还是child指针;建立线索二叉树,实质上就是遍历一颗二叉树,在相应的指针域进行操作) (2)二叉排序树(了解生成过程) (3)最优二叉树(哈夫曼树):对于一组有确定权值的叶子节点,构造的具有最小带权路径长度的二叉树(典型应用:哈夫曼编码) (3)平衡树: 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。(防止退化为链表,提高搜索效率) (4)红黑树:红黑树是平衡二叉树的一种;它有很好的性质,树中的结点都是有序的,而且因为它本身就是平衡的

javascript_DOM操作

风流意气都作罢 提交于 2020-04-08 04:36:03
DOM (Document Object Model) DOM 节点类型 Document #document => null DocumentTpe doctype名称 => null Element elementName => null Attr 属性名称 => 属性值 Text #text => 节点内容 Comment #comment => 注释文本 DOM 获取节点 // 查询id元素 const node = document.getElementById(element) // 查询className元素,返回的是一个node list,是一个集合 const node = document.getElementsByClassName(className) // 查询标签元素,返回的是一个node list,是一个集合 const node = document.getElementsByTagName(tagname) // 查询元素的 name 属性 document.getElementsByName(name) // h5 出的 // 获取selector选择器元素 const node = document.querySelector(selector) // 获取所有selector选择器元素 const node = document

es6 Iterator接口和for-of

亡梦爱人 提交于 2020-04-07 06:05:47
iterator接口 简介: Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即for...of循环(详见下文)。当使用for...of循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。 iterator接口遍历过程 创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。 第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。 不断调用指针对象的next方法,直到它指向数据结构的结束位置。 凡是具有Symbol.iterator属性的数据就具备for-of遍历的功能 Symbol.iterator本身是一个函数,该函数返回一个具有next方法的对象(简称遍历对象),next方法则是返回一个获取下一个成员的信息 遍历对象除了有next方法,还可以部署return和throw方法 return方法的使用场合是,如果for...of循环提前退出(通常是因为出错,或者有break语句),就会调用return方法。如果一个对象在完成遍历前,需要清理或释放资源,就可以部署return方法。 throw方法主要是配合 Generator 函数使用,一般的遍历器对象用不到这个方法 下面见例子 例子一: next:()=>({

【LeetCode-数组】删除排序数组中的重复项

六眼飞鱼酱① 提交于 2020-04-06 23:59:54
题目描述 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。 题目链接: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 思路 做这题之前可以先做一下 移除元素 。使用一快一慢两个指针,i为慢指针,j为快指针,都从数组头开始遍历。如果nums[i]==nums[j],则j++,继续遍历下一个元素。如果nums[i]!=nums[j],则说明找到了不同的元素,因为重复的元素要保留一个,所以先将i+1后赋值,也就是nums[++i]=nums[j],当j遍历完毕时,当前数组的长度为i+1.代码如下: class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return 0; int i=0, j=0; int curLen

GO语言数组和切片实例详解

☆樱花仙子☆ 提交于 2020-04-06 23:10:26
一、数组   与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。 (1)数组的创建。 数组有3种创建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下: 复制代码 代码如下: func test5() { var iarray1 [5]int32 var iarray2 [5]int32 = [5]int32{1, 2, 3, 4, 5} iarray3 := [5]int32{1, 2, 3, 4, 5} iarray4 := [5]int32{6, 7, 8, 9, 10} iarray5 := [...]int32{11, 12, 13, 14, 15} iarray6 := [4][4]int32{{1}, {1, 2}, {1, 2, 3}} fmt.Println(iarray1) fmt.Println(iarray2) fmt.Println(iarray3) fmt.Println(iarray4) fmt.Println(iarray5) fmt.Println(iarray6) } 结果: [0 0 0 0 0] [1 2 3 4 5] [1 2 3 4 5] [6 7 8 9 10] [11 12

014 进程遍历

[亡魂溺海] 提交于 2020-04-06 22:05:52
进程遍历   ● 枚举     ○ Windows API     ○ 数据库 -> 注册表来访问 -> RegQuery函数来获取     ○ ToolHelp库       ○ 兼容性比较好       ○ WIndows 95 就存在     ○ Process Startus库 EnumProcess 函数 PSAPI.DLL   ● Tool Help Reference     ○ Tool Help Structures       ○ 结构体       ○ HEAPENTRY32 1 typedef struct tagHEAPENTRY32 { 2 SIZE_T dwSize;            //结构体大小 3 HANDLE hHandle;           //堆块句柄 4 ULONG_PTR dwAddress;          //堆块开始的地址 5 SIZE_T dwBlockSize;        //堆块的大小 6 DWORD dwFlags;          //标志位 7 DWORD dwLockCount;        //不再被使用的 总是设置为0 8 DWORD dwResvd;          //保留位不再被使用 9 DWORD th32ProcessID;      //使用堆的进程的标识符。 10 ULONG

for...of循环

亡梦爱人 提交于 2020-04-06 06:45:53
for of 循环语句 for...of 循环语句 ES6 为实现了迭代器接口的数据提供了统一访问访机制:新增了一个循环语句 — for...of 循环语句;该语句会自动寻找 Iterator 接口。所以数据只要实现了 Iterator 接口,该数据就是可以被遍历的;该接口默认部署在 Symbol.iterator 属性上 原生的数据实现了迭代器接口的有: Array , String , Map , Set , TypedArray (如 Int8Array ), arguments , NodeList , HTMLCollection 等 // 字符串迭代器接口 console.log(String.prototype[Symbol.iterator]) //类数组 迭代器 let arr = new Int8Array(4) arr[0] = 10 arr[1] = 100 // arr[2] = 1000 arr[2] = 2 ** 7 - 1 console.log(arr) //参数 function demo() { console.log(arguments) } demo() console.log(document.getElementsByTagName('div')); console.log(document.querySelectorAll('div'

数据结构和算法系列17 图

ε祈祈猫儿з 提交于 2020-04-03 11:49:52
数据结构和算法系列17 图 阅读目录 一,图的定义 二,图相关的概念和术语 三,图的创建和遍历 四,最小生成树和最短路径 五,算法实现 这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结: 1,图的定义? 2,图相关的概念和术语? 3,图的创建和遍历? 4,最小生成树和最短路径? 5,算法实现? 回到顶部 一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 回到顶部 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号,而下面介绍的有向图是用尖括号。 无向图的顶点集和边集分别表示为: V(G)={V 1 ,V 2 ,V

数据结构

烈酒焚心 提交于 2020-04-03 11:48:27
一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 回到顶部 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号,而下面介绍的有向图是用尖括号。 无向图的顶点集和边集分别表示为: V(G)={V 1 ,V 2 ,V 3 ,V 4 ,V 5 } E(G)={(V 1 ,V 2 ),(V 1 ,V 4 ),(V 2 ,V 3 ),(V 2 ,V 5 ),(V 3 ,V 4 ),(V 3 ,V 5 ),(V 4 ,V 5 )} 对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下。 因此,<V i ,V j >和<V j, V i >是两条不同的有向边。注意,有向边又称为弧。 有向图的顶点集和边集分别表示为: V(G)

数据结构和算法系列-------- 图

眉间皱痕 提交于 2020-04-03 11:47:50
原文地址 http://www.cnblogs.com/mcgrady/archive/2013/09/23/3335847.html#_label2 阅读目录 一,图的定义 二,图相关的概念和术语 三,图的创建和遍历 四,最小生成树和最短路径 五,算法实现 这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结: 1,图的定义? 2,图相关的概念和术语? 3,图的创建和遍历? 4,最小生成树和最短路径? 5,算法实现? 一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号