JavaScript实现二叉搜索树
JavaScript中的搜索二叉树实现,供大家参考,具体内容如下
二叉搜索树(BST,BinarySearchTree),也称二叉排序树或二叉查找树
二叉搜索树是一颗二叉树,可以为空;如果不为空,满足以下性质:
- 非空左子树的所有键值小于其根结点的键值
- 非空右子树的所有键值大于其根结点的键值
- 也就是左结点值想<根结点值<右节点值
- 左、右子树本身也都是二叉搜索树
二叉搜索树的操作
insert(key):向树中插入一个新的键
search(key):在树中查找一个键,如果结点存在,则返回true;如果不存在,则返回false
inOrderTraverse:通过中序遍历方式遍历所有结点
preOrderTraverse:通过先序遍历方式遍历所有结点
postOrderTraverse:通过后序遍历方式遍历所有结点
min:返回树中最小的值/键
max:返回树中最大的值/键
remove(key):从树中移除某个键
先序遍历
- ①访问根结点
- ②先序遍历其左子树
- ③先序遍历其右子树
中序遍历
①中序遍历其左子树
②访问根结点
③中序遍历其右子树
后序遍历
①后序遍历其左子树
②后序遍历其右子树
③访问根结点
JavaScript代码实现队列结构
//创建BinarySearchTree functionBinarySerachTree(){ //创建节点构造函数 functionNode(key){ this.key=key this.left=null this.right=null } //保存根的属性 this.root=null //二叉搜索树相关的操作方法 //向树中插入数据 BinarySerachTree.prototype.insert=function(key){ //1.根据key创建对应的node varnewNode=newNode(key) //2.判断根节点是否有值 if(this.root===null){ this.root=newNode }else{ this.insertNode(this.root,newNode) } } BinarySerachTree.prototype.insertNode=function(node,newNode){ if(newNode.keykey){//2.1.传入的key较小,向左边继续查找 returnthis.searchNode(node.left,key) }elseif(node.key key){ node=node.left }elseif(node.key key){ parent=node node=node.left }elseif(node.key key){ node.left=this.removeNode(node.left,key) } } //删除结点 BinarySerachTree.prototype.remove=function(key){ //1.定义临时保存的变量 varcurrent=this.root varparent=this.root varisLeftChild=true //2.开始查找节点 while(current.key!==key){ parent=current if(key 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。