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[js]获取url参数的代码
Oct 17 Javascript
javascript 数组排序函数
Aug 20 Javascript
js动画(animate)简单引擎代码示例
Dec 04 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
使用jQuery实现返回顶部
Jan 26 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
原生js实现自定义消息提示框
Nov 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
php $_SERVER当前完整url的写法
2009/11/12 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
Python导出DBF文件到Excel的方法
2015/07/25 Python
基于python 字符编码的理解
2017/09/02 Python
python3实现windows下同名进程监控
2018/06/21 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
专科毕业生求职简历的自我评价
2013/10/12 职场文书
大学迎新生标语
2014/10/06 职场文书
员工表扬信怎么写
2015/05/05 职场文书
父母教会我观后感
2015/06/17 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
深入浅析React中diff算法
2021/05/19 Javascript