当前位置: 首页 > news >正文

兰州网站推广企业网页设计公司

兰州网站推广,企业网页设计公司,长沙 网站建设,微信做引流网站目录 二分搜索树节点的查找 Java 实例代码 src/runoob/binary/BinarySearchTreeSearch.java 文件代码: 二分搜索树节点的查找 二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变…

目录

 

二分搜索树节点的查找

Java 实例代码

src/runoob/binary/BinarySearchTreeSearch.java 文件代码:


 

二分搜索树节点的查找

二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变量, 这个查找的操作一样是一个递归的过程, 具体代码实现如下:

...
// 查看以node为根的二分搜索树中是否包含键值为key的节点, 使用递归算法
private boolean contain(Node node, Key key){

    if( node == null )
        return false;

    if( key.compareTo(node.key) == 0 )
        return true;
    else if( key.compareTo(node.key) < 0 )
        return contain( node.left , key );
    else // key > node->key
        return contain( node.right , key );
}
...

以下实例在二分搜索树中寻找 43 元素

 

ee6f95c549935c28b9fa470a543f4a7d.png

(1) 元素 43 比根节点 42 大,需要在右子节点继续比较。

 

a41a37a56ab04144ffae2e68c7528753.png

(2) 元素 43 比 59 小,需要在左子节点继续比较。

 

3409a5751812ecb1be27287e7108b2cd.png

(3) 元素 43 比 51 小,需要在左子节点继续比较。

 

66b3f3a1c679f37b7e50cbada6fe9fd3.png

(4) 查找 51 的左子节点 43,正好和相等,结束。

如果需要查找 key 对应的 value,代码如下所示:

...
// 在以node为根的二分搜索树中查找key所对应的value, 递归算法
// 若value不存在, 则返回NULL
private Value search(Node node, Key key){

    if( node == null )
        return null;

    if( key.compareTo(node.key) == 0 )
        return node.value;
    else if( key.compareTo(node.key) < 0 )
        return search( node.left , key );
    else // key > node->key
        return search( node.right, key );
}
...

Java 实例代码

源码包下载:Downloadhttps://www.runoob.com/wp-content/uploads/2020/09/runoob-algorithm-BinarySearchTreeSearch.zip

src/runoob/binary/BinarySearchTreeSearch.java 文件代码:

package runoob.binary;

/**
 * 二分搜索树查找
 */
public class BinarySearchTreeSearch<Key extends Comparable<Key>, Value> {
    // 树中的节点为私有的类, 外界不需要了解二分搜索树节点的具体实现
    private class Node {
        private Key key;
        private Value value;
        private Node left, right;

        public Node(Key key, Value value) {
            this.key = key;
            this.value = value;
            left = right = null;
        }
    }
    // 根节点
    private Node root;
    // 树种的节点个数
    private int count;

    // 构造函数, 默认构造一棵空二分搜索树
    public BinarySearchTreeSearch() {
        root = null;
        count = 0;
    }

    // 返回二分搜索树的节点个数
    public int size() {
        return count;
    }

    // 返回二分搜索树是否为空
    public boolean isEmpty() {
        return count == 0;
    }

    // 向二分搜索树中插入一个新的(key, value)数据对
    public void insert(Key key, Value value){
        root = insert(root, key, value);
    }

    // 查看二分搜索树中是否存在键key
    public boolean contain(Key key){
        return contain(root, key);
    }

    // 在二分搜索树中搜索键key所对应的值。如果这个值不存在, 则返回null
    public Value search(Key key){
        return search( root , key );
    }


    //********************
    //* 二分搜索树的辅助函数
    //********************

    // 向以node为根的二分搜索树中, 插入节点(key, value), 使用递归算法
    // 返回插入新节点后的二分搜索树的根
    private Node insert(Node node, Key key, Value value){

        if( node == null ){
            count ++;
            return new Node(key, value);
        }

        if( key.compareTo(node.key) == 0 )
            node.value = value;
        else if( key.compareTo(node.key) < 0 )
            node.left = insert( node.left , key, value);
        else    // key > node->key
            node.right = insert( node.right, key, value);

        return node;
    }

    // 查看以node为根的二分搜索树中是否包含键值为key的节点, 使用递归算法
    private boolean contain(Node node, Key key){

        if( node == null )
            return false;

        if( key.compareTo(node.key) == 0 )
            return true;
        else if( key.compareTo(node.key) < 0 )
            return contain( node.left , key );
        else // key > node->key
            return contain( node.right , key );
    }

    // 在以node为根的二分搜索树中查找key所对应的value, 递归算法
    // 若value不存在, 则返回NULL
    private Value search(Node node, Key key){

        if( node == null )
            return null;

        if( key.compareTo(node.key) == 0 )
            return node.value;
        else if( key.compareTo(node.key) < 0 )
            return search( node.left , key );
        else // key > node->key
            return search( node.right, key );
    }
}

 

http://www.ds6.com.cn/news/13771.html

相关文章:

  • 网站建设需求表营销手机都有什么功能啊
  • 织梦网站怎么做模板微信推广方法
  • 网站建设项目特色9个广州seo推广神技
  • 惠州企业建站程序网上营销方法
  • 零基础学做网站b站推广入口在哪
  • 代做网站平台搜索引擎成功案例分析
  • 国外成人做视频网站识图找图
  • 提升网站流量该怎么做山东省住房和城乡建设厅
  • 学校网站建设计划静态网站开发
  • 重庆教育集团建设公司网站长尾词优化外包
  • 觅知网 大而全的高质量素材站今日重大事件
  • 简述网站建设的一般步骤百度搜索引擎排行榜
  • 建网站价格 优帮云优化设计单元测试卷
  • 专门做lolh的网站seo sem关键词优化
  • 专业商城网站制作公司重庆seo小z博客
  • 网站附件做外链无需下载直接进入的网站的代码
  • 不愁销路的小型加工厂项目年入百万优化排名推广教程网站
  • 网站设计怎么样网络营销课程设计
  • 做优化网站注意什么重庆seo标准
  • 做外贸上阿里巴巴什么网站韩国比分预测
  • 网站维护与更新关键词搜索优化外包
  • 大连网站建设特色福州百度关键词排名
  • 做网站的标性网络营销方法有什么
  • 大石桥网站制作郑州seo顾问热狗
  • 好看的官网源码seo外链怎么做
  • 常用的营销方法和手段北京seo排名收费
  • 经典营销案例100例win7优化大师官方网站
  • dede做招聘网站查看浏览过的历史记录百度
  • 聊城做网站信息重庆网络推广公司
  • 网站建设广告图片项目平台