js数据结构与算法----树
来源:互联网 发布:美如画网络机顶盒设置 编辑:程序博客网 时间:2024/06/07 18:26
树是一种非顺序结构,二叉树 ,二叉搜索树BST,
function BinarySearchTree(){
var Node=function(key){
this.key=key;
this.left=null;
this.right=null;
};
var root=null;
// 插入一个值
this.insert=function(key){
var newNode =new Node(key);
if(root===null){
root=newNode;
} else {
insertNode(root,newNode);
}
};
var insertNode=function(node,newNode){
if(newNode.key<node.key){
if(node.left===null){
node.left=newNode;
} else {
insertNode(node.left,newNode)
}
} else {
if(node.right===null){
node.right=newNode;
} else {
insertNode(node.right,newNode);
}
}
};
// 中序遍历
this.inOrderTraverse=function(callback){
inOderTraverseNode(root,callback);
};
var inOderTraverseNode=function (node,callback){
if(node !==null){
inOderTraverseNode(node.left,callback);
callback(node.key);
inOderTraverseNode(node.right,callback);
}
};
// 先序遍历
this.preOrderTraverse=function(callback){
preOderTraverseNode(root,callback);
};
var preOderTraverseNode=function (node,callback){
if(node !==null){
callback(node.key);
preOderTraverseNode(node.left,callback);
preOderTraverseNode(node.right,callback);
}
};
// 后序遍历
this.postOrderTraverse=function(callback){
postOderTraverseNode(root,callback);
};
var postOderTraverseNode=function (node,callback){
if(node !==null){
postOderTraverseNode(node.left,callback);
postOderTraverseNode(node.right,callback);
callback(node.key);
}
};
// 找到树中最小值
this.min=function(){
return minNode(root);
};
var minNode=function(node){
if(node){
while(node&&node.left !==null){
node=node.left;
}
return node.key
} else {
return null;
}
};
//找到最大值
this.max=function(){
return maxNode(root);
};
var maxNode=function(node){
if(node){
while(node&&node.right !==null){
node=node.right;
}
return node.key
} else {
return null;
}
};
// 搜索特定的值
this.search=function(key){
return searchNode(root,key);
};
var searchNode=function(node,key){
if(node==null){
return false;
} else {
if(node.key<key){
return searchNode(node.right,key);
} else if (node.key>key){
return searchNode(node.left,key);
} else {
return true;
}
}
};
};
function printTree(value){
console.log(value)
}
var tree=new BinarySearchTree();
tree.insert(76);
tree.insert(78);
tree.insert(96);
tree.insert(6);
tree.insert(8);
// tree.postOrderTraverse(printTree);
var min1=tree.max();
console.log(min1);
阅读全文
0 0
- js数据结构与算法----树
- JS数据结构与算法--字典
- js数据结构与算法----栈与队列
- js 数据结构与算法 更新ing
- JS数据结构与算法(一)
- JS数据结构与算法(二)
- JS数据结构与算法(三)
- 数据结构与算法的js描述总结
- 数据结构与算法---树
- 数据结构与算法分析 树
- 【数据结构与算法】二叉树
- 数据结构与算法-树1
- 数据结构与算法之----树
- 数据结构与算法-二叉树
- 算法与数据结构 - 二叉树
- 数据结构与算法:二叉树
- 数据结构与算法分析:树
- 8.4 树----数据结构与算法
- HTML5 音频/视频
- Flask: Flash消息
- (5)java语言基础(注释,关键字,标识符,常变量,类型转换,转义字符、位运算和一些注意的运算)
- lintcode Guess Number Game(Java)
- 909422229_ListUtils
- js数据结构与算法----树
- 来构思项目中用到单号的生成方式
- 反射:Class类Class实例
- 近期文章预告
- 如何入门NPL
- 多线程共享和独享的资源
- 通过服务器日志溯源定位web应用攻击路径
- [RK3288][Android6.0] WiFi之wpa_supplicant初始化过程
- 如何退出node的命令行