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

数据结构与算法-二分搜索树节点的查找

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!

文章目录

      • 引言
      • 一、二分搜索树的基本概念
      • 二、二分搜索树节点查找的步骤
      • 三、二分搜索树节点查找的实现
        • 1. 二分搜索树节点类
        • 2. 二分搜索树类
        • 3. Java 示例代码
      • 四、总结

引言

二分搜索树是一种特殊的二叉树,其中每个节点的值都大于其左子树中的所有节点的值,且小于其右子树中的所有节点的值。这种特性使得在二分搜索树中查找、插入和删除节点变得非常高效。本文将深入探讨二分搜索树节点查找的基本原理,并通过具体的Java代码详细说明在二分搜索树中查找节点的实现步骤。

一、二分搜索树的基本概念

二分搜索树是一种特殊的二叉树,具有以下特性:

  1. 左子树:每个节点的左子树中的所有节点的值都小于该节点的值。
  2. 右子树:每个节点的右子树中的所有节点的值都大于该节点的值。
  3. 唯一性:树中不允许存在重复的键值。

二、二分搜索树节点查找的步骤

查找二分搜索树中的节点通常按照以下步骤进行:

  1. 从根节点开始:检查根节点的值是否等于目标值。
  2. 递归查找:如果目标值小于当前节点的值,则在左子树中查找;如果目标值大于当前节点的值,则在右子树中查找。
  3. 终止条件:如果当前节点为空或找到目标值,则返回相应的结果。
    在这里插入图片描述

三、二分搜索树节点查找的实现

接下来,我们将通过一个示例来详细了解二分搜索树节点查找的实现步骤。

1. 二分搜索树节点类

首先定义二分搜索树的节点类:

public class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val = val;this.left = null;this.right = null;}
}
2. 二分搜索树类

定义二分搜索树类,实现节点的查找:

public class BinarySearchTree {private TreeNode root;public void insert(int val) {root = insert(root, val);}private TreeNode insert(TreeNode node, int val) {if (node == null) {return new TreeNode(val);}if (val < node.val) {node.left = insert(node.left, val);} else if (val > node.val) {node.right = insert(node.right, val);}return node;}public TreeNode find(int val) {return find(root, val);}private TreeNode find(TreeNode node, int val) {if (node == null || node.val == val) {return node;}if (val < node.val) {return find(node.left, val);} else {return find(node.right, val);}}public void inorderTraversal() {inorderTraversal(root);}private void inorderTraversal(TreeNode node) {if (node != null) {inorderTraversal(node.left);System.out.print(node.val + " ");inorderTraversal(node.right);}}
}
3. Java 示例代码

创建二分搜索树并查找节点:

public class Main {public static void main(String[] args) {BinarySearchTree bst = new BinarySearchTree();// 插入节点bst.insert(5);bst.insert(3);bst.insert(7);bst.insert(4);bst.insert(2);// 中序遍历显示二分搜索树System.out.println("Inorder Traversal:");bst.inorderTraversal();// 查找节点TreeNode foundNode = bst.find(4);if (foundNode != null) {System.out.println("\nFound node with value: " + foundNode.val);} else {System.out.println("\nNode not found.");}// 查找不存在的节点TreeNode notFoundNode = bst.find(9);if (notFoundNode != null) {System.out.println("Found node with value: " + notFoundNode.val);} else {System.out.println("Node not found.");}}
}

四、总结

二分搜索树是一种非常实用的数据结构,尤其适用于需要频繁查找、插入和删除元素的应用场景。在实际编程中,二分搜索树可以用于实现高效的数据存储和检索,例如在数据库索引、符号表等领域有着广泛的应用。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【数据结构与算法】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

数据结构与算法相关文章索引文章链接
数据结构与算法-插入排序数据结构与算法-插入排序
数据结构与算法-希尔排序数据结构与算法-希尔排序
数据结构与算法-归并排序数据结构与算法-归并排序
数据结构与算法-随机快速排序数据结构与算法-随机快速排序
数据结构与算法-双路快速排序数据结构与算法-双路快速排序
数据结构与算法-三路排序数据结构与算法-三路排序
数据结构与算法-关于堆的基本存储介绍数据结构与算法-关于堆的基本存储介绍
数据结构与算法-关于堆的基本排序介绍数据结构与算法-关于堆的基本排序介绍
数据结构与算法-索引堆及其优化数据结构与算法-索引堆及其优化
数据结构与算法-二分搜索树数据结构与算法-二分搜索树
数据结构与算法-二分搜索树链表节点的插入数据结构与算法-二分搜索树链表节点的插入

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

http://www.lryc.cn/news/411810.html

相关文章:

  • C++|设计模式(七)|⭐️观察者模式与发布/订阅模式,你分得清楚吗
  • 计算机毕业设计选题推荐-学院教学工作量统计系统-Java/Python项目实战
  • 人机交互不仅仅是科技问题
  • Lua Debug.GetInfo
  • 每日刷题(最短路、图论)
  • 远程服务器训练网络之tensorboard可视化
  • MySQL锁详解
  • 面试问题记录:
  • vue如何在组件中监听路由参数的变化
  • antd中form表单校验文件上传
  • 商家转账到零钱2024最新开通必过攻略
  • 2024全新Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能/全开源运营版本
  • (一)javascript中class类
  • 【注意力MHA,MQA,GQA,MLA】
  • 《从零开始做个摸鱼小网站! · 序》灵感来源
  • 计算机基础(Windows 10+Office 2016)教程 —— 第5章 文档编辑软件Word 2016(上)
  • 短视频矩阵管理系统源码:实现短视频内容全面布局
  • 系统设计中15 个最重要的权衡
  • 12年外贸实战经验,一定对你有帮助!
  • Linux---进程(3)---进程状态
  • Drools规则引擎实现停车计费
  • 【python虚拟环境】安装第三方包失败/failed with error code1
  • DiffusionModel-latent diffusion,VAE,U-Net,Text-encoder
  • C# form的移植工作
  • linux防火墙相关命令
  • 实习中学到的一点计算机知识(MP4在企业微信打不开?)
  • ElasticSearch入门语法基础知识
  • 【C++】C++应用案例-dolphin海豚记账本
  • Matlab数据处理学习笔记
  • 浏览器中的同源策略、CORS 以及相关的 Fetch API 使用