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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
vue 2.0 购物车小球抛物线的示例代码
Feb 01 Javascript
Vue.js添加组件操作示例
Jun 13 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
Apr 07 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
Feb 24 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
浅谈JavaScript 声明提升
Sep 14 Javascript
10分钟学会js处理json的常用方法
Dec 06 Javascript
JavaScript代码实现简单计算器
Dec 27 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
python SVD压缩图像的实现代码
2019/11/05 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
django修改models重建数据库的操作
2020/03/31 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
个人租房协议书
2014/04/09 职场文书
大专生自荐书范文
2014/06/22 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python