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 Perfection kill 测试及答案
Mar 23 Javascript
将json当数据库一样操作的javascript lib
Oct 28 Javascript
javascript获取flash版本号的方法
Nov 20 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
vue组件开发props验证的实现
Feb 12 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
webpack打包react项目的实现方法
2018/06/21 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
如何进行有效的自我评价
2013/09/27 职场文书
法学专业应届生求职信
2013/10/16 职场文书
学校节能减排倡议书
2014/05/16 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
订货会主持词
2015/07/01 职场文书
2016年元旦主持词
2015/07/06 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫