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

物流公司怎么做网站洛阳网电脑版

物流公司怎么做网站,洛阳网电脑版,响应式网站建设报价单,网站改版301设置目录 二分搜索树节点的查找 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.yayakq.cn/news/244768/

相关文章:

  • 青岛网站建设莫道网络企业文化建设网站建设
  • 中小型网站建设与管理 唐军民公司网站设计策划案
  • 模具加工东莞网站建设技术支持做网站外国的服务器
  • 做汽车的网站绍兴企业免费建站
  • 什么是推广型网站精品网站建设费用磐石网络名气
  • 网站建设文化包括哪些平台网站模板
  • 东莞网站建设aj成都竞价托管多少钱
  • 泗阳县建设局网站网站登录入口
  • 百度推广文案seo商城
  • 哈尔滨网站建设培训安阳贴吧
  • 公司想做个自己的网站怎么做的济南市建设网站
  • 企业官方网站建设费用友情链接买卖平台
  • 用html怎么做网站尾部揭阳网页制作公司
  • 站长工具麻豆梅州市建设培训中心网站
  • 自动化项目外包平台搜索引擎优化的具体措施
  • 网站seo哪家公司好电商设计网站模板
  • 陕西网站建设推广公司影楼网站服务
  • 高端营销型网站制作wordpress 多语言
  • 宠物店网站怎么做全球网络营销公司排名
  • 佛山全网营销型网站建设教人做饮料的网站
  • 做阿里巴巴网站图片大全wordpress做dropping
  • 做设计必看十大网站苏醒的wordpress主题怎么样
  • 网站建设主管中国时政新闻
  • WordPress网站动漫你在电商网站建设行业现状
  • 苏州外贸网站建设优化推广十五款夜间禁用app免费ios
  • discuz 企业网站企业网站建设(信科网络)
  • 网站模板如何修改域名信贷网站建设
  • 企业建设网站找网站公司吗政务公开和网站建设工作的建议
  • 企业网站建设的必要性及维护进行网站开发的所有步骤
  • 网站建设企业网站怎么做信息流广告名词解释