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 相关文章推荐
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
Jquery性能优化详解
May 15 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
js倒计时显示实例
Dec 11 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 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 Token(令牌)设计
2008/03/15 PHP
php mysql 封装类实例代码
2016/09/18 PHP
php正则修正符用法实例详解
2016/12/29 PHP
js 目录列举函数
2008/11/06 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
极简的Python入门指引
2015/04/01 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
python实现用户登录系统
2016/05/21 Python
python 简单的多线程链接实现代码
2016/08/28 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
python Matplotlib模块的使用
2020/09/16 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
RealTek面试题
2016/06/28 面试题
婚礼主持词开场白
2014/03/13 职场文书
自动一体化专业求职信
2014/03/15 职场文书
关于安全演讲稿
2014/05/09 职场文书
社会实践心得体会范文
2016/01/14 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技