首页 > 编程语言 >Java数据存储结构——二叉查找树

Java数据存储结构——二叉查找树

时间:2024-09-16 23:23:17浏览次数:3  
标签:左子 遍历 Java 二叉 查找 22.1 节点

文章目录

22.1.2二叉查找树

22.1.2.1 概述

二叉查找树,又称二叉排序树或者二叉搜索树

二叉查找树的特点:

  • 每一个节点上最多有两个子节点
  • 任意节点左子树上所有节点的值都小于根节点的值
  • 任意节点右子树上所有节点的值都大于根节点的值

在这里插入图片描述

22.1.2.1二叉查找树添加节点
  • 小的存左边
  • 大的存右边
  • 一样的不存

案例:将 7 4 10 5依次 按照二叉树存储

在这里插入图片描述

22.1.2.2二叉查找树查找节点

从根节点依次比较,比较根节点大的话往右子树比较,比根节点小的话往左子树走。

在这里插入图片描述

22.1.2.3 二叉树遍历
  • 前序遍历: 根 左 右

从根节点开始,先遍历根节点,再左子节点,最后右子节点的顺序遍历。

如图,遍历结果为 20、18、16、19、23、22、24

在这里插入图片描述

  • 中序遍历:左 根 右

先遍历左子树 ,再遍历根节点 ,最后遍历右子树

中序遍历获取的结果是从小到大的数据

如图,遍历结果:16、18、19、20、22、23、24

在这里插入图片描述

  • 后序遍历:左 右 根

先遍历左子树,再遍历右子树 ,最后遍历根节点

如图,遍历结果:16、19、18、22、24、23、20

在这里插入图片描述

  • 层序遍历:从根节点一层一层开始

上图按照层序遍历结果为:20、18、23、16、19、22、24

22.1.2.4 二叉查找树的弊端

如,将7 、10、11、12、13按照二叉查找树存储,如下图:

在这里插入图片描述

标签:左子,遍历,Java,二叉,查找,22.1,节点
From: https://blog.csdn.net/weixin_54555405/article/details/142308809

相关文章

  • java读取寄存器数据
    在Java中直接读取硬件寄存器(如CPU寄存器、I/O端口等)通常不是一个直接的任务,因为Java设计之初就是为了跨平台的安全性和易用性,它并不直接提供访问底层硬件的API。不过,在嵌入式系统、工业控制或需要直接与硬件交互的特定场景中,可能会使用JNI(JavaNativeInterface)或JNA(JavaNativeAc......
  • Java基础学习(七)(枚举和注解)
    一、枚举枚举是一组常量的集合。枚举属于一种特殊的类,里面只包含一组有限的特定的对象。有两种实现方式:①自定义类实现枚举  ②使用enum关键字实现枚举1.1自定义类实现枚举不需要提供set方法,因为枚举对象值通常为只读对枚举对象/属性使用final+static共同修饰,实现底......
  • java pom两个模块需要互相引用怎么办
    一:概述 处理Java多模块项目中的互相引用:一种POM管理方式在Java的多模块项目中,模块间的互相引用是一个常见需求。本文将探讨在Maven项目管理工具中,如何有效地实现两个或多个模块之间的互相引用,并通过具体案例来展示不同方法的应用。 ava的多模块项目,通常是指一个项目包含多个子模......
  • Java LeetCode每日一题
            1184.公交站间的距离    需求:        环形公交路线上有n个站,按次序从0到n-1进行编号。我们已知每一对相邻公交站之间的距离,distance[i]表示编号为i的车站和编号为(i+1)%n的车站之间的距离。        环线上的公交......
  • java基础(小技巧)
    文章目录一、日志输出二、字符串拼接三、日期比较四、常用注解五、Lombok的原理提示:以下是本篇文章正文内容,下面案例可供参考一、日志输出之前使用的方式。在要使用的类里面定义日志类:privatestaticLoggerlogger=LoggerFactory.getLogger(“xxx”);现在使......
  • Day17 二叉树part07| LeetCode 235. 二叉搜索树的最近公共祖先 ,701.二叉搜索树中的插
    235.二叉搜索树的最近公共祖先235.二叉搜索树的最近公共祖先利用二叉搜索树的特性——有序树,可知,如果中间节点是p和q的公共节点,那个中间节点的数值一定在[p,q]区间因此,从根节点往下搜索,遇到的第一个位于[p,q]或[q,p]区间的节点就是最近公共祖先classSolution{......
  • SpreadJS 17.1.5 -JavaScript 电子表格组件
    SpreadJS JavaScript电子表格组件示例全球最畅销的JavaScript电子表格,包含500多个Excel函数快速提供真正类似Excel的电子表格体验-完全不依赖Excel。创建财务应用程序,仪表板,图表,数据透视表,性能基准,科学实验室笔记本以及其他类似的JavaScript电子表格应用程序......
  • Java 值传递与引用传递
    以下是包含引用的完整博客文章,以markdown格式输出,附带“Java只有值传递”的相关参考来源。Java是一种广泛使用的面向对象编程语言,但对于值传递(passbyvalue)和引用传递(passbyreference)的理解,很多开发者往往会混淆。在这篇文章中,我将详细解释Java的传递机制,并引入对......
  • JAVA-IO 指定目录中查找文件,文件合并分割
    指定目录中查找文件publicstaticList<String>findFile(Filetarget,StringfileName){ArrayList<String>path=newArrayList<>();if(target==null){returnpath;}if(target.isDirectory()){File[]files=target.li......
  • JAVA-IO获取resource WEB-INF 中文件 JAR包中
    getResource+getPath()classPaththis.getClass().getClassLoader().getResource(StringUtils.EMPTY).getPath()Stringpath=this.getClass().getClassLoader().getResource(fileName).getPath();StringfilePath=URLDecoder.decode(path,StandardCharsets.UTF_8);......