JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例


Posted in Javascript onFebruary 21, 2019

本文实例讲述了JavaScript数据结构与算法之二叉树插入节点、生成二叉树。分享给大家供大家参考,具体如下:

javascript数据结构与算法-- 插入节点、生成二叉树

二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中

JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例

/*
*二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中
*
*
* */
/*用来生成一个节点*/
function Node(data, left, right) {
  this.data = data;//节点存储的数据
  this.left = left;
  this.right = right;
  this.show = show;
}
function show() {
  return this.data;
}
/*用来生成一个二叉树*/
function BST() {
  this.root = null;
  this.insert = insert;
}
/*将数据插入二叉树
  (1)设根节点为当前节点。
  (2)如果待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点;反
  之,执行第4步。
  (3)如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续
  执行下一次循环。
  (4)设新的当前节点为原节点的右节点。
  (5)如果当前节点的右节点为null,就将新的节点插入这个位置,退出循环;反之,继续
  执行下一次循环。
* */
function insert(data) {
  var n = new Node(data, null, null);
  if (this.root == null) {
    this.root = n;
  }
  else {
    var current = this.root;
    var parent;
    while (true) {
      parent = current;
      if (data < current.data) {
        current = current.left;//待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
        if (current == null) {//如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续执行下一次while循环。
          parent.left = n;
          break;
        }
      }
      else {
        current = current.right;//待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
        if (current == null) {
          parent.right = n;
          break;
        }
      }
    }
  }
}
var nums = new BST();
nums.insert(23);
nums.insert(45);
nums.insert(16);
nums.insert(37);
nums.insert(3);
nums.insert(99);
nums.insert(22);
console.log(nums);

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
location.hash保存页面状态的技巧
Apr 28 Javascript
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
最常用的jQuery表单验证(简单)
May 23 jQuery
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
基于Vue SEO的四种方案(小结)
Jul 01 Javascript
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 #Javascript
Vue实现table上下移动功能示例
Feb 21 #Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 #Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 #Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 #Javascript
ES6基础之默认参数值
Feb 21 #Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 #Javascript
You might like
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
JS前端加密算法示例
2016/12/22 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Python字典实现伪切片功能
2020/10/28 Python
如何做好总经理助理
2013/11/12 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
安全月活动总结
2014/05/05 职场文书
应聘护士求职信
2014/07/21 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
mysql全面解析json/数组
2022/07/07 MySQL
MySQL自定义函数及触发器
2022/08/05 MySQL