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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
dojo学习第二天 ajax异步请求之绑定列表
Aug 29 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
js实现文本框选中的方法
May 26 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
JS简单循环遍历json数组的方法
Apr 22 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
vue的diff算法知识点总结
Mar 29 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
Sep 02 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
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
jquery获取节点名称
2015/04/26 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
简单了解python关系(比较)运算符
2019/07/08 Python
python 公共方法汇总解析
2019/09/16 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
解决Python3下map函数的显示问题
2019/12/04 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
销售总监岗位职责
2014/01/04 职场文书
求职简历自我评价范例
2014/03/12 职场文书
企业文化演讲稿
2014/05/20 职场文书
甜品店创业计划书
2014/08/14 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
实习单位意见
2015/06/04 职场文书
保留意见审计报告
2015/06/05 职场文书
优秀大学生申请书
2019/06/24 职场文书