二叉查找树数组表示的JavaScript实现
来源:互联网 发布:js隐藏手机号码中间 编辑:程序博客网 时间:2024/06/05 03:34
function BinarySearchTree(initialArray){//底层数组var elementData = [];//往二叉查找树中添加元素var addElement = function(array,index,element){//如果是空树 if(!array.length){ //设置根节点 array[0] = element; } else{ var cur = array[index]; if(element < cur){ if(array[2*index+1] !== undefined){ addElement(array,2*index+1,element); } else{ array[2*index+1] = element; } } else{ if(array[2*index+2] !== undefined){ addElement(array,2*index+2,element); } else{ array[2*index+2] = element; } } } };//中序遍历,并将结果返回var inOrder = function(binaryTree,index){ var res = []; if(binaryTree[index] !== void 0){ res = res.concat(inOrder(binaryTree,2*index+1)); res.push(binaryTree[index]); res = res.concat(inOrder(binaryTree,2*index+2)); } return res;};if(!BinarySearchTree.prototype.addElement){BinarySearchTree.prototype.addElement = function(e){addElement(elementData,0,e);};}if(!BinarySearchTree.prototype.inOrder){BinarySearchTree.prototype.inOrder = function(){return inOrder(elementData,0);};}//判断某个数组是不是二叉查找树if(!BinarySearchTree.isBSTArray){BinarySearchTree.isBSTArray = function(array){if (arguments.length === 0) {return false;};//中序遍历 var res = inOrder(array,0); //如果遍历结果不是增序,说明不是二叉查找树 for(var i=0;i<res.length-1;i++){ if(res[i] > res[i+1]){ return false; } } //是增序,返回真 return true;};}//利用初始化数组对树做初始化if(initialArray){for(var i=0;i<initialArray.length;i++){ addElement(elementData,0,initialArray[i]); }}}var initialArray = [1,2,3];console.log("初始化数组为:" + initialArray);console.log("生成二叉查找树...");var bst = new BinarySearchTree(initialArray);var element = 4;console.log("添加元素:" + element);bst.addElement(element);console.log("中序遍历结果:" + bst.inOrder());console.log("测试isBSTArray方法...");var test1 = [2,1,3,0,1];console.log("test1:" + test1);console.log("res1:" + BinarySearchTree.isBSTArray(test1));var test2 = [2,1,3,,0];console.log("test2:" + test2);console.log("res2:" + BinarySearchTree.isBSTArray(test2));
阅读全文
0 0
- 二叉查找树数组表示的JavaScript实现
- 二叉查找树的表示javascript
- 堆的实现-用数组表示的完全二叉树
- 数组实现二叉查找树
- JavaScript实现二叉树查找
- 二叉树的查找javascript
- JavaScript二叉查找树删除节点的实现原理
- 平衡二叉树的数组表示算法
- c#使用数组实现二叉查找树
- 数据结构:JavaScript实现二叉查找树
- 数组的表示javascript
- 二叉查找树的实现
- 二叉查找树的实现
- 二叉查找树的实现
- 二叉查找树的实现
- 二叉查找树的实现
- 二叉查找树的实现
- 二叉查找树的实现
- 线性代数教程之二——特征分解
- 文档对象模型——DOM
- 2017年10月6日提高组T2 猫公司
- node节点
- 用shell命令获得hdfs文件名并动态创建hive表
- 二叉查找树数组表示的JavaScript实现
- python flask sever client 测试,post 方法,传入python dict或者json字符串
- eclipse中的项目鼠标右键卡死(百度:删掉workspace的.metadata文件夹不行,还会卡),sts插件尝试联网引起【先拔网线耐心等待5秒!不行再插上网线】
- I/O复用总结
- 关于GSDMM的数学思考
- java代码读取properties文件
- 明明的随机数
- Java Perfomance
- Invitation Cards POJ