广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >怎么理解并掌握Java二叉查找树
  • 227
分享到

怎么理解并掌握Java二叉查找树

2024-04-02 19:04:59 227人浏览 八月长安
摘要

本篇内容主要讲解“怎么理解并掌握Java二叉查找树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Java二叉查找树”吧!一、介绍二叉查找树,英文全

本篇内容主要讲解“怎么理解并掌握Java二叉查找树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Java二叉查找树”吧!

一、介绍

二叉查找树,英文全称:Binary Search Tree,简称:BST,它是计算机科学中最早投入实际使用的一种树形结构,特性如下:

  • 若左子树不为空,则左子树上所有结点的值均小于它的根结点的值;

  • 若右子树不为空,则右子树上所有结点的值均大于或等于它的根结点的值;

  • 它的左、右子树也分别为二叉查找树;

特性定义比较粗放,所以在树形形态结构上,有着多样,例如下图:

怎么理解并掌握Java二叉查找树

上图 a、b、c  三个图,都满足以上特性,也被称为二叉查找树,虽然通过中序遍历可以得到一个有效的数组:[1、2、3、4、5、6、7、8],但是就查找效率来说,有着一定的差别,例如查询目标为8的内容,从根目录开始查询,结构如下:

  • a图,需要5次;

  • b图,需要3次;

  • c图,需要8次;

由此可见,不同的形状,所需查找的次数是不一样的,关于这一点,后面我们在介绍平衡二叉查找树、红黑树这种数据结构的时候,会进行详细介绍。

虽然二叉查找树,在不同的形状下,查找效率不一样,但是它是学习其他树形结构的基础,了解了二叉查找树的算法,相信再了解其他二叉树结构会轻松很多。

二、算法思路

2.1、 新增

新增元素表示向二叉树中添加元素,比较简单。如果二叉树为空,默认第一个元素就是根节点,如果二叉树不为空,就以上面提到的特点为判断条件,进行左、右节点的添加。

怎么理解并掌握Java二叉查找树

2.2、 查找

查找元素表示从根节点开始查找元素,如果根节点为空,就直接返回空值,如果不为空,通过以左子树小于父节点,右子树大于父节点的特性为依据进行判断,然后以递归方式进行查找元素,直到找到目标的元素为止。

怎么理解并掌握Java二叉查找树

2.3、 删除

删除元素表示从二叉树中移除要删除的元素,逻辑稍微复杂一些。同样,先要判断根节点是否为空,如果为空,直接返回,如果不为空,分情况考虑。

被删除的节点,右子树为空

怎么理解并掌握Java二叉查找树

这种场景,只需要将被删除元素的左子树的父节点移动到被删除元素的父节点,然后将被删除元素移除即可。

  • 被删除的节点,左子树为空

怎么理解并掌握Java二叉查找树

这种场景,与上面类似,只需要将被删除元素的右子树的父节点移动到被删除元素的父节点,然后将被删除元素移除即可。

  • 被删除的节点,左、右子树不为空 

怎么理解并掌握Java二叉查找树

这种场景,稍微复杂一点,先定位到要删除的目标元素,根据左子节点内容一定小于当前节点内容特点,找到目标元素的左子树,通过递归遍历找到目标元素的左子树的右子树,找到最末端的元素之后,进行与目标元素进行替换,最后移除最末端元素。

2.4、 遍历

二叉树的遍历方式,分两类:

  • 层次遍历,从根节点开始;

  • 深度遍历,又分为前序、中序、后序遍历三种方式;

2.4.1、层次遍历

层次遍历,算法思路比较简单,从根节点开始,分层从左到右进行遍历元素。

怎么理解并掌握Java二叉查找树

2.4.2、深度遍历

深度遍历,在遍历起始位置上又分三种,分别是前序遍历、中序遍历、后序遍历,每种遍历方式输出的结果不一样。

  • 前序遍历:从树根开始 -> 左子树 -> 右子树

怎么理解并掌握Java二叉查找树

  • 中序遍历:从最末端左子树开始 -> 树根 -> 右子树

怎么理解并掌握Java二叉查找树

  • 后序遍历:从最末端左子树 -> 右子树 -> 最后到树根

怎么理解并掌握Java二叉查找树

尽管二叉树在遍历方式上有多种,但是只要我们掌握了其中的思路原理,再去实现起来,就会轻松很多。

三、代码实践

首先创建一个实体数据结构BSTnode,内容如下:

怎么理解并掌握Java二叉查找树

然后,创建一个二叉查找树操作类BinarySearchTree,内容如下:

怎么理解并掌握Java二叉查找树

怎么理解并掌握Java二叉查找树

怎么理解并掌握Java二叉查找树

最后,我们来测试一下,代码内容如下:

怎么理解并掌握Java二叉查找树

怎么理解并掌握Java二叉查找树


输出结果:

========插入元素======== 插入关键字key=5  插入到树根节 插入关键字key=2  插入关键字key=7  插入关键字key=1  插入关键字key=6  插入关键字key=4  插入关键字key=8  插入关键字key=3  插入关键字key=9  插入关键字key=10  ========中序遍历元素======== key:1 key:2 key:3 key:4 key:5 key:6 key:7 key:8 key:9 key:10 ========查找key为9的元素======== 搜索关键字key=9  搜索路径[5 ->7 ->8 ->9 ->],搜索成功 查找结果:true ========删除key为10的元素======== 删除关键字key=10  开始搜索目标元素[5 ->7 ->8 ->9 ->10 ->],搜索成功 删除结果:true ========再次中序遍历元素======== key:1 key:2 key:3 key:4 key:5 key:6 key:7 key:8 key:9

到此,相信大家对“怎么理解并掌握Java二叉查找树”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么理解并掌握Java二叉查找树

本文链接: https://www.lsjlt.com/news/85198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么理解并掌握Java二叉查找树
    本篇内容主要讲解“怎么理解并掌握Java二叉查找树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Java二叉查找树”吧!一、介绍二叉查找树,英文全...
    99+
    2022-10-19
  • 怎么理解并掌握Java的AVL树
    这篇文章主要介绍“怎么理解并掌握Java的AVL树”,在日常操作中,相信很多人在怎么理解并掌握Java的AVL树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解并掌握J...
    99+
    2022-10-19
  • Java怎么实现二叉查找树的增删查
    本篇内容介绍了“Java怎么实现二叉查找树的增删查”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义二叉查找树(ADT)是一个具有对于树种的...
    99+
    2023-07-02
  • Java实现二叉查找树的增删查详解
    目录定义增加节点查询节点删除节点定义 二叉查找树(ADT)是一个具有对于树种的某个节点X,它的左节点都比X小,它的右节点都比X大的二叉树。如下就是一个符合 要求的二叉查找树: 增加...
    99+
    2022-11-13
  • 怎么理解二叉树
    本篇文章为大家展示了怎么理解二叉树,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。大白话讲解二叉树比如现在有个数组,存放了很多用户的名字,需要从这个数组中找到包含指定...
    99+
    2022-10-19
  • C语言中二叉查找树怎么实现
    本文小编为大家详细介绍“C语言中二叉查找树怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中二叉查找树怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二叉查找树性质1、二叉树每个树的节点最多有...
    99+
    2023-06-16
  • 怎么在java项目中实现一个二叉查找树算法
    今天就跟大家聊聊有关怎么在java项目中实现一个二叉查找树算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体内容如下package 查找;import edu...
    99+
    2023-05-31
    java 二叉查找树 ava
  • Java怎么找二叉树的最近公共祖先
    本篇内容主要讲解“Java怎么找二叉树的最近公共祖先”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么找二叉树的最近公共祖先”吧!思路一:先假设这棵树是二叉搜索树首先我们补充说明一下什么...
    99+
    2023-06-30
  • C++高级数据结构之二叉查找树怎么实现
    本文小编为大家详细介绍“C++高级数据结构之二叉查找树怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++高级数据结构之二叉查找树怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。高级数据结构(Ⅳ)...
    99+
    2023-06-30
  • 怎么理解并掌握Redis
    本篇内容介绍了“怎么理解并掌握Redis”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Redis是一个开源的使用ANSI C语言编写、支持网...
    99+
    2023-06-02
  • 怎么理解并掌握MySQL
    本篇内容主要讲解“怎么理解并掌握MySQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握MySQL”吧!MySQL分为 server 层和存储引擎...
    99+
    2022-10-18
  • 怎么理解并掌握RAC
    这篇文章主要介绍“怎么理解并掌握RAC”,在日常操作中,相信很多人在怎么理解并掌握RAC问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解并掌握RAC”的疑惑有所帮助!接...
    99+
    2022-10-19
  • 怎么理解并掌握JVM
    本篇内容介绍了“怎么理解并掌握JVM”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、JVM的基本介绍JV...
    99+
    2022-10-19
  • 怎么在Java中利用二叉查找树算法实现一个排序功能
    这期内容当中小编将会给大家带来有关怎么在Java中利用二叉查找树算法实现一个排序功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:public class BinaryNode<T ext...
    99+
    2023-05-31
    java 二叉查找树 排序
  • 怎么理解并掌握mysql的表
    本篇内容介绍了“怎么理解并掌握mysql的表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.索引组织表如...
    99+
    2022-10-19
  • 怎么理解并掌握Python线程
    这篇文章主要讲解了“怎么理解并掌握Python线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握Python线程”吧!1.自定义进程自定义进程类,继承Process类,重写ru...
    99+
    2023-06-25
  • 怎么理解并掌握Java虚拟机内存区
    本篇内容主要讲解“怎么理解并掌握Java虚拟机内存区”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Java虚拟机内存区”吧!一、方法区(Method Area)方法区的概念方法区又...
    99+
    2023-06-16
  • 怎么利用go语言实现查找二叉树中的最大宽度
    这篇文章主要介绍“怎么利用go语言实现查找二叉树中的最大宽度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用go语言实现查找二叉树中的最大宽度”文章能帮助大家解决问题。介绍这道题是这样的,有一...
    99+
    2023-06-30
  • 怎么理解并掌握MySQL Server Startup Script
    本篇内容介绍了“怎么理解并掌握MySQL Server Startup Script”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家...
    99+
    2022-10-18
  • 怎么理解并掌握mysql中的information_schema
    本篇内容介绍了“怎么理解并掌握mysql中的information_schema”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2022-10-18
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作