当前位置: 首页 > Web前端 > JavaScript

Javascript数据结构与算法总结

时间:2023-03-26 21:02:46 JavaScript

组装成一个数组,没有重复元素,也没有顺序概念。由对象{}表示。函数设置(){varitems={};//向集合中添加一个新项目。true,表示添加了这个值。如果该值已存在于集合中,则返回false,表示未添加。this.add=function(value){if(!this.has(value)){items[value]=value;返回真;}返回假;}//从集合中删除一个值。this.remove=function(value){if(items[value]){删除项目[value];返回真;}返回假;}//如果该值在集合中,则返回true,否则返回false。this.has=function(value){returnreturnitems.hasOwnProperty(value);}//删除集合中的所有项目。this.clear=function(){items={};}//返回集合中包含的元素个数。类似于数组的长度属性。this.size=function(){返回Object.keys(items).length;}//返回一个包含集合中所有值的数组。this.values=function(){返回Object.keys(items);}}Union给定两个集合,返回一个包含两个集合中所有元素的新集合。Object.assign(),两者都是必须的;并集的数学概念,即集合A和B的并集,表示为A∪B,定义如下:A∪B={x|x∈A∨x∈B}表示要么x(元素)存在于A中,要么x存在于B中。现在实现Set类的union方法:this.union=function(otherSet){varunionSet=newSet();varvalues=this.values();对于(vari=0;ib.length会有一个值,[1,2,3,4]-[1,2,3]=4;varvalues=this.values();对于(vari=0;iotherSet.size()){returnfalse;}else{varvalues=this.values();for(vari=0;inode.key){returnsearchNode(node.right,key);}else{返回真值;}}删除一个节点。remove=function(key){root=removeNode(root,key);}letremoveNode=function(node,key){if(node===null){返回null;}if(keynode.key){node.right=removeNode(node.right,key);返回节点;}else{//找到keyFind,key=node.key//第一种情况,一个叶子节点if(node.left===null&&node.right===null){node=null;//去掉这个nodereturnnode;//使父节点指向子节点的指针指向null}//第二种情况,只有一个子节点的节点if(node.left==null){node=node.right;//用它下面的替换它returnnode;}elseif(node.right===null){node=node.left;返回节点;}//第三种情况,一个有2个子节点的节点,从右子树中找到它所在位置的最小替换,将其移除letaux=findMinNode(node.right);//找右边的最小节点,同min实现,但返回节点node.key=aux.key;node.right=removeNode(node.right,aux.key);//右边最小节点的右边指向右边要删除的节点returnnode;}}移除叶节点:移除具有左节点或右节点的节点:移除具有2个节点的节点:图是网络结构的抽象模型。图是由边连接的一组节点(或顶点)。图G=(V,E)由以下元素组成。?V:一组顶点?E:一组连接V中的顶点的边