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 call 函数的用法说明
Apr 09 Javascript
Javascript 面向对象 对象(Object)
May 13 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 Javascript
深入探讨javascript中的数据类型
Mar 04 Javascript
每天一篇javascript学习小结(String对象)
Nov 18 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
jQuery Validate表单验证深入学习
Dec 18 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
详解RequireJs官方使用教程
Oct 31 Javascript
JS代码优化的8点建议
Feb 04 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 引用是个坏习惯
2010/03/12 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
php如何获取Http请求
2020/04/30 PHP
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python实现分段线性插值
2018/12/17 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
Python selenium自动化测试模型图解
2020/04/15 Python
浅谈python锁与死锁问题
2020/08/14 Python
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
社会实践自我鉴定
2013/11/07 职场文书
质检部部长职责
2013/12/16 职场文书
业务部经理岗位职责
2014/01/04 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书