二分查找判定树(二分查找树平均查找长度)

如果data[0]等于一组数据中最小的,那么就会增加查找的时间复杂度。平衡二叉树(追求极致的平衡),现实需求很难满足,红黑数孕育而生

大家好,又见面了,我是你们的朋友全栈君。

Don’t say much, just go to the code.

package org.bood.tree;

/** * 二分查找树 * ps:如果 data[0] 等于一组数据中最小的,那么就会增加查找的时间复杂度。<br/> * 平衡二叉树(追求极致的平衡),现实需求很难满足,红黑数孕育而生 <br/> * * @author bood * @since 2020/10/16 */
public class BinarySearchTree { 
   

    /** * 根节点数 */
    int data;
    /** * 左边的数 */
    BinarySearchTree left;
    /** * 右边的数 */
    BinarySearchTree rigth;

    public BinarySearchTree(int data) { 
   
        this.data = data;
        this.left = null;
        this.rigth = null;
    }

    // 二分查找
    public void insert(BinarySearchTree root, int data) { 
   
        // 数大于根节点数,右边
        if (data > root.data) { 
   

            // 右边是空的直接插入
            if (null == root.rigth) { 
   
                root.rigth = new BinarySearchTree(data);
            } else { 
   
                insert(root.rigth, data);
            }

            // 数大于根节点数,左边
        } else { 
   

            // 左边是空的直接插入
            if (null == root.left) { 
   
                root.left = new BinarySearchTree(data);
            } else { 
   
                insert(root.left, data);
            }

        }
    }

    // 中序遍历
    public void in(BinarySearchTree root) { 
   
        if (null != root) { 
   
            in(root.left);
            System.out.print(root.data + " ");
            in(root.rigth);
        }
    }

    public static void main(String[] args) { 
   
        int[] data = { 
   5, 6, 1, 7, 8, 9, 2, 4, 10};
        BinarySearchTree root = new BinarySearchTree(data[0]);
        for (int i = 0; i < data.length; i++) { 
   
            root.insert(root, data[i]);
        }

        System.out.println("中序遍历:");
        root.in(root);
    }

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128209.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • drupal安装教程mysql_Drupal8 入门教程(一)安装部署[通俗易懂]

    drupal安装教程mysql_Drupal8 入门教程(一)安装部署[通俗易懂]一、Drupal简介Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。截止2011年底,共有13,802位WEB专家参加了Drupal的开发工作;228个国家使用181种语言的729,791位网站设计工作者使用Drupal。著名案例包括:联…

    2022年7月20日
    17
  • idea2021.3 永久激活码破解方法

    idea2021.3 永久激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    53
  • 高级I/O函数之sendfile函数[通俗易懂]

    高级I/O函数之sendfile函数[通俗易懂]sendfile函数在两个文件描述符之间传递数据(完全在内核中操作),从而避免了内核缓冲区和用户缓冲区之间的数据拷贝,效率很高,被称为零拷贝。函数定义为:#include&lt;sys/sendfile.h&gt;ssize_tsenfile(intout_fd,intin_fd,off_t*offset,size_tcount);in_fd参数是待读出内容的文件描述符,out…

    2022年5月10日
    37
  • 十五、组合模式—— 容器与内容的一致性 #和设计模式一起旅行#

    组合具有一致性…故事背景坚持去输出真的很不容易,今天的的天气真的是热啊!我之前一直想些一个系列是和设计模式去旅行,通过构思一些场景,让自己更好的理解和表达设计模式,但是有时候为了思考一个适合的故事会花费很多时间,so,从这里开始,如果后面的设计模式想到了好的场景的话就写故事背景,要不就简单介绍,重点看故事主角。在现实生活中很多地方我们会使用到树形结构,在软件中也随处可见,例…

    2022年2月27日
    41
  • Java开源报表工具 JasperReports

    Java开源报表工具 JasperReportsJasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 授权协议:LGPL…

    2022年10月20日
    5
  • oracle导出dmp文件失败_oracle导出数据库dmp文件

    oracle导出dmp文件失败_oracle导出数据库dmp文件–创建用户createuseranhuiidentifiedbyanhui-给予用户权限grantcreatesessiontoanhuigrantconnect,resourcetoanhui;-创建表空间1)先导dmp文件,报错:tablespace‘FMIS_LOB’doesnotexist2)然后创建表空间createtablespaceFMIS_LOB…

    2022年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号