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.Jcrop的头像编辑器
Mar 01 Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 Javascript
jQuery Mobile 导航栏代码
Nov 01 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
Sep 09 Javascript
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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
python简单线程和协程学习心得(分享)
2017/06/14 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
python制作微博图片爬取工具
2021/01/16 Python
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
自我评价范文
2013/12/22 职场文书
领导证婚人证婚词
2014/01/13 职场文书
40岁生日感言
2014/02/15 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
经典广告词大全
2014/03/14 职场文书
旅游安全协议书
2014/04/21 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js