JavaScript数据结构之二叉树的查找算法示例


Posted in Javascript onApril 13, 2017

本文实例讲述了JavaScript数据结构之二叉树的查找算法。分享给大家供大家参考,具体如下:

前面文章介绍了二叉树的遍历,现在谈谈在二叉树中进行查找。对二叉查找树来说,一般有以下三类查找:最大值,最小值和给定值。

查找最小值就是遍历左子树,直到找到最后一个结点,这是因为在二叉查找树中较小的值总是在左子节点上的。

代码如下:

function getMin(){//查找最小值
    var current=this.root;//指向根节点
    while(current.left!=null){
      current=current.left;
    }
    return current.data;
}

同理可得查找最大值的代码如下:

function getMax(){//查找最大值
  var current=this.root;
  while(current.right!=null){//如果未找到右结点则一直找
    current=current.right;
  }
  return current.data;
}

而在二叉查找树中查找指定值也不难,就是依次判断节点值的查找值的大小,如果节点值小,则继续往右查找,如果节点值大,则继续往左查找,代码如下:

function find(data){//查找某个值
    var current=this.root;
    while(current!=null){
      if(current.data==data){
        return current;
      }else if(current.data>data){//如果节点值比寻找值大,则往左找
        current=current.left;
      }else{//如果节点值比寻找值小,则往右找
        current=current.right;
      }
    }//如果没找到则返回null
    return null;
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
URL编码转换,escape() encodeURI() encodeURIComponent()
Dec 27 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
javascript模拟地球旋转效果代码实例
Dec 02 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
javascript操作数组详解
Dec 17 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
vue实现tab栏点击高亮效果
Aug 19 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 Javascript
Three.js实现雪糕地球的使用示例详解
Jul 07 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 #jQuery
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 #Javascript
vue如何引用其他组件(css和js)
Apr 13 #Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 #Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 #jQuery
vue组件如何被其他项目引用
Apr 13 #Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 #Javascript
You might like
PHPMailer安装方法及简单实例
2008/11/25 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
JavaScript 创建对象
2009/07/17 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python中文编码那些事
2014/06/25 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python中的with...as用法介绍
2015/05/28 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python函数与方法的区别总结
2019/06/23 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
eBay奥地利站:eBay.at
2019/07/24 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
学习型党组织心得体会
2014/09/12 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python