博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉堆(小到大)-数据结构-JavaScript版
阅读量:4340 次
发布时间:2019-06-07

本文共 1366 字,大约阅读时间需要 4 分钟。

/** * Created by caoke on 2015/11/21. *///二叉树 特点父节点比子节点小var Tree2=function(){    //初始化 二叉树的子元素    this.children=[];}Tree2.prototype={    push:function(x){        var arr=this.children        //自己节点的编号        var i=arr.length        while(i>0){            //父节点的编号            var p=parseInt((i-1)/2)            //如果已经没有大小颠倒则退出            if(arr[p]<=x)break;            //把父节点的值放下去,自己提上来            arr[i]=arr[p]            i=p        }        arr[i]=x    },    pop:function(){        var arr=this.children        //最小值        var ret=arr[0]        //要提到根的值        var x=arr.pop()        //从根开始向下交换        if(0
=x)break; //把儿子的数值提上去 arr[i]=arr[a] i=a } arr[i]=x } return ret }}var node=new Tree2()//堆的插入node.push(0);//=>{ children: [ 0 ] }node.push(5);//=>{ children: [ 0, 5 ] }node.push(2);//{ children: [ 0, 5, 2 ] }//3和4发生交换node.push(6);//{ children: [ 0, 5, 2, 6 ] }//2和3发生交换node.push(7);//=>{ children: [ 0, 5, 2, 6, 7 ] }node.push(4);//=>{ children: [ 0, 5, 2, 6, 7, 4 ] }node.push(3);//=>{ children: [ 0, 5, 2, 6, 7, 4, 3 ] }console.log(node)//堆的删除console.log(node.pop())console.log(node.pop())console.log(node.pop())console.log(node.pop())console.log(node.pop())console.log(node.pop())console.log(node.pop())

  

转载于:https://www.cnblogs.com/caoke/p/4984268.html

你可能感兴趣的文章
初识前端作业1
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
端口号大全
查看>>
机器学习基石笔记2——在何时可以使用机器学习(2)
查看>>
POJ 3740 Easy Finding (DLX模板)
查看>>
MySQL 处理重复数据
查看>>
关于typedef的用法总结(转)
查看>>
【strtok()】——分割字符串
查看>>
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>