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打开新窗口同时关闭旧窗口
Jan 16 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
javascript绘制漂亮的心型线效果完整实例
Feb 02 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
Oct 28 Javascript
小程序实现五星点评效果
Nov 03 Javascript
puppeteer库入门初探
Jan 09 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 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数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
layui table 参数设置方法
2018/08/14 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python切片用法实例教程
2014/09/08 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
工艺技术员岗位职责
2015/02/04 职场文书
保险内勤岗位职责
2015/04/13 职场文书
社区敬老月活动总结
2015/05/07 职场文书
2015年科普工作总结
2015/07/23 职场文书
小学主题班会教案
2015/08/17 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Redis Stream类型的使用详解
2021/11/11 Redis
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers