用JS将一个升序数组转换成一个二叉排序树
来源:互联网 发布:淘宝网点照明设计软件 编辑:程序博客网 时间:2024/06/04 19:25
思路:将数组中间那个元素设为树的根节点,然后剩下左右两个数组用递归的方法构建左右子树。
代码如下:
<script>// Node表示树的节点function Node(data,left,right){ this.data = data; this.left = left; this.right = right;}// 将数组转为二叉查找树function arrConvert2BST(arr){ var len = arr.length; if(len <= 0){ return null; } return BST(arr);}// 构建二叉查找树function BST(arr){ if(arr.length <= 0){ return null; }else{ var mid = Math.floor((arr.length)/2); var root = new Node(arr[mid], null, null); var left = arr.slice(0,mid); var right = arr.slice(mid+1); root.left = BST(left); root.right = BST(right); return root; }}// 另一种方法// function BST(arr,start,end){// if(start <= end){// var mid = Math.floor((start+end)/2);// var root = new Node(arr[mid], null, null);// root.left = BST(arr, start, mid-1);// root.right = BST(arr, mid+1, end);// return root;// }else{// return null;// }// }// 中序输出function inOrder(node){ if(!(node === null)){ inOrder(node.left); console.log(node.data); inOrder(node.right); }}// 测试var arr = [1,2,3,4,5,10];var root = arrConvert2BST(arr);inOrder(root);</script>
控制台结果输出:
0 0
- 用JS将一个升序数组转换成一个二叉排序树
- 有序数组(升序)转换为二叉排序树
- 两升序数组合并成一个升序数组
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- [c语言]将两个整形升序数组合并为一个升序数组
- 升序数组转成二叉排序树
- JS将一个十进制转换成二进制
- java基础将一个int数组转换成一个字符串
- 将一个十六进制的数组转换成一个十六进制数
- 【代码】N个非定长升序数组 合并成一个升序数组
- 合并两升序数组称为一个升序数组算法
- js将一个数组分成二维数组
- 将两个有序数组归并为一个升序数组-Java实现
- 将两个升序链表合并成一个 升序链表
- 用递归判断一个数组是否是升序
- 将一个字符串按照升序输出
- cc150:将一个栈按升序排序
- 用面向对象解决:输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列
- elasticsearch的基本用法
- FORTRAN中の时间函数
- RabbitMQ
- 遍历SD卡或者具体文件夹下面具体的文件的实现
- 关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析
- 用JS将一个升序数组转换成一个二叉排序树
- 极光推送集成
- css常用属性
- struts2升级之后jsp到action传值出现乱码问题
- css居中那点事儿
- Java学习之TreeSet
- Spring MVC使用ModelAndView进行重定向
- AndroidStudio与eclipse打包的时候报错。Error:(4) Error: "ssdk_instapager_login_html" is not translated in "en"
- 2017年上半年软件程序员考试---初级程序员--考点总结1