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

影视网站建设源码织梦 别人 网站 模板

影视网站建设源码,织梦 别人 网站 模板,wordpress壁纸主题,低价网站备案目录 二分搜索树节点的查找 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/707974/

相关文章:

  • 长春建站方案百度竞价开户
  • 手机网站锁定竖屏看代码wordpress apple
  • 无锡百度网站排名网站开发相关书籍资料
  • qq官方网站登录网站文字列表页模板
  • 如果在网站做推广连接建网站非要做外链吗
  • 如何做一个自己的网站呢网站禁止火车头采集
  • 阿里云怎么做静态网站潍坊网站关键词推广
  • 域名怎么创建网站吗模板之家html
  • 这个网站中有网名做会计的吗 了解一下国外域名的网站怎么做
  • 微网站入口商城用什么系统做网站
  • 青岛市建设监理网站普洱北京网站建设
  • 关于jsp网站开发的最新书籍上海网站设计开发公司
  • 网站开发人员 生活网络推广策划
  • 网站服务器是网站的空间吗高端网站建设哪里好
  • 阿里巴巴网站域名专门做排行的网站
  • 怎么做应援网站wordpress study
  • asp网站发送邮件建设网站网址是多少
  • asp网站安装教程网站内容建设规划
  • 大型网站建设规范妖精直播
  • 深圳企业公司网站设计美丽乡村 村级网站建设
  • 彩票网站开发教程天津建设部网站保温
  • 蚌埠网站制作公司html网站开头怎么做的
  • 建网站的免费空间站长工具在线平台
  • 做店铺装修的公司网站平面广告设计论文
  • 单位建设网站需要招标怎么查询网站建设时间
  • 天河网站建设集团深圳在建工程查询
  • 西安做网站朋朋网络个人网站设计模板中文
  • 网站定制一般价格多少个体工商户网上注销
  • 网站建设一般多钱电子商务交易平台
  • 珠海建站软件重庆市工程建设交易中心网站