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 相关文章推荐
javascript firefox兼容ie的dom方法脚本
May 18 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
Feb 02 Javascript
JavaScript中“+”的陷阱深刻理解
Dec 04 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
Jun 07 Javascript
详解Vue源码之数据的代理访问
Dec 11 Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 Javascript
jQuery中DOM操作原则实例分析
Aug 01 jQuery
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
Vue数字输入框组件的使用方法
Oct 19 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
如何将数据从文本导入到mysql
2006/10/09 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
使用grappelli为django admin后台添加模板
2014/11/18 Python
python之PyMongo使用总结
2017/05/26 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python绘制立方体的方法
2018/07/02 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
基于python生成器封装的协程类
2019/03/20 Python
详解python的argpare和click模块小结
2019/03/31 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
超市创业计划书
2014/04/24 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
服务宗旨标语
2014/07/01 职场文书
人事代理委托书
2014/09/27 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
Python开发五子棋小游戏
2022/05/02 Python