创建10个标签,点击的时候弹出来对应的序号
var a
for(let i=0;i<10;i++){
a=document.createElement('a')
a.innerHTML=i+'<br>'
a.addEventListener('click',function(e){ console.log(this)//this为当前点击的<a> e.preventDefault()//如果调用这个方法,默认事件行为将不再触发。 //例如,在执行这个方法后,如果点击一个链接(a标签),浏览器不会跳转到新的 URL 去了。我们可以用 event.isDefaultPrevented() 来确定这个方法是否(在那个事件对象上)被调用过了。 alert(i)
})
const d=document.querySelector('div')
d.appendChild(a)//append向一个已存在的元素追加该元素。
}
判断是否是电话号码
function isPhone(tel) {var regx = /^1[34578]\d{9}$/;return regx.test(tel);
}
验证是否是邮箱
function isEmail(email) {var regx = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;return regx.test(email);
}
二叉树深度遍历
// 二叉树深度遍历
class Node {constructor(element, parent) {this.parent = parent // 父节点 this.element = element // 当前存储内容this.left = null // 左子树this.right = null // 右子树}
}
class BST {constructor(compare) {this.root = null // 树根this.size = 0 // 树中的节点个数this.compare = compare || this.compare}compare(a,b) {return a - b}add(element) {if(this.root === null) {this.root = new Node(element, null)this.size++return}// 获取根节点 用当前添加的进行判断 放左边还是放右边let currentNode = this.root let comparelet parent = null while (currentNode) {compare = this.compare(element, currentNode.element)parent = currentNode // 先将父亲保存起来// currentNode要不停的变化if(compare > 0) {currentNode = currentNode.right} else if(compare < 0) {currentNode = currentNode.left} else {currentNode.element = element // 相等时 先覆盖后续处理}}let newNode = new Node(element, parent)if(compare > 0) {parent.right = newNode} else if(compare < 0) {parent.left = newNode}this.size++}// 前序遍历preorderTraversal(visitor) {const traversal = node=>{if(node === null) return visitor.visit(node.element)traversal(node.left)traversal(node.right)}traversal(this.root)}// 中序遍历inorderTraversal(visitor) {const traversal = node=>{if(node === null) return traversal(node.left)visitor.visit(node.element)traversal(node.right)}traversal(this.root)}// 后序遍历posterorderTraversal(visitor) {const traversal = node=>{if(node === null) return traversal(node.left)traversal(node.right)visitor.visit(node.element)}traversal(this.root)}// 反转二叉树:无论先序、中序、后序、层级都可以反转invertTree() {const traversal = node=>{if(node === null) return let temp = node.left node.left = node.right node.right = temptraversal(node.left)traversal(node.right)}traversal(this.root)return this.root}
}
先序遍历
二叉树的遍历方式
![图片转存失败,建议将图片保存下来直接上传// 测试
var bst = new BST((a,b)=>a.age-b.age) // 模拟sort方法
bst.add({age: 10})
bst.add({age: 8})
bst.add({age:19})
bst.add({age:6})
bst.add({age: 15})
bst.add({age: 22})
bst.add({age: 20})
// 先序遍历
// console.log(bst.preorderTraversal(),'先序遍历')
// console.log(bst.inorderTraversal(),'中序遍历')
//(http://img-repo.poetries.top/images/20210522214837.png)
// console.lo