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

6.9(Java)二叉搜索树

1.我的代码:

public class BinarySearchTree {class TreeNode {public int key;public TreeNode left;public TreeNode right;public TreeNode(int key) {this.key = key;}}public TreeNode root;     // 根节点// 插入一个元素,注意,不能插入重复的值,如果这样,插入失败public boolean insert(int key) {TreeNode newNode = new TreeNode(key);if (this.root == null) {this.root = newNode;return true;}TreeNode parent = null;TreeNode cur = this.root;while (cur != null) {if (key == cur.key) {return false;} else if (key < cur.key) {parent = cur;cur = cur.left;} else {parent = cur;cur = cur.right;}}if (key < parent.key) {parent.left = newNode;} else {parent.right = newNode;}return true;}// 查找key是否存在public TreeNode search(int key) {if (this.root == null) {return null;}TreeNode cur = this.root;while (cur != null) {if (key == cur.key) {return cur;} else if (key < cur.key) {cur = cur.left;} else {cur = cur.right;}}return null;}// 删除key的值public boolean removeTreeNode(int key) {if (this.root == null) {return false;}TreeNode parent = null;TreeNode cur = this.root;while (cur != null) {if (key == cur.key) {this.remove(parent, cur);return true;} else if (key < cur.key) {parent = cur;cur = cur.left;} else {parent = cur;cur = cur.right;}}return false;}private void remove(TreeNode parent, TreeNode cur) {// 分三种大情况// 1.该节点左边为空if (cur.left == null) {// 三种小情况if (cur == this.root) {this.root = cur.right;} else if (cur == parent.left) {parent.left = cur.right;} else { // cur == parent.rightparent.right = cur.right;}} else if (cur.right == null) { // 2.右边为空// 三种小情况if (cur == this.root) {this.root = cur.left;} else if (cur == parent.left) {parent.left = cur.left;} else { // cur == parent.rightparent.right = cur.left;}} else {// 3.左右都不空,使用替罪羊法,找右边最小的替代,然后删除该替代TreeNode tmpParent = cur;TreeNode tmpCur = cur.right;while (tmpCur.left != null) {tmpParent = tmpCur;tmpCur = tmpCur.left;}cur.key = tmpCur.key;// 考虑特殊情况,没有进while循环if (cur == tmpParent) {cur.right = tmpCur.right;} else {tmpParent.left = tmpCur.right;}}}}
public class Test {public static void main(String[] args) {BinarySearchTree binarySearchTree = new BinarySearchTree();int[] array = {12, 4, 5, 10, 8, 3};for (int x : array) {binarySearchTree.insert(x);}binarySearchTree.removeTreeNode(5);}
}

重点研究删除问题,见以上代码.

相关文章:

6.9(Java)二叉搜索树

1.我的代码: public class BinarySearchTree {class TreeNode {public int key;public TreeNode left;public TreeNode right;public TreeNode(int key) {this.key key;}}public TreeNode root; // 根节点// 插入一个元素,注意&#xff0c;不能插入重复的值&#xff0c;如…...

洛谷P2256 一中校运会之百米跑

题目背景 在一大堆秀恩爱的 ** 之中&#xff0c;来不及秀恩爱的苏大学神踏着坚定&#xff08;&#xff1f;&#xff09;的步伐走向了 100 100 100 米跑的起点。这时苏大学神发现&#xff0c;百米赛跑的参赛同学实在是太多了&#xff0c;连体育老师也忙不过来。这时体育老师发…...

python-opencv对极几何 StereoRectify

OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中&#xff0c;这里只谈谈这个函数怎么使用&#xff0c;参数具体指哪些函数参数 随便去网上一搜或者看官方手册就能得到参数信息&#xff0c;但是&#xff01;&#xff01;相对关系非常容易出错&…...

pom文件---maven

027-Maven 命令行-实验四-生成 Web 工程-执行生成_ev_哔哩哔哩_bilibili 27节.后续补充 一.maven下载安装及配置 1)maven下载 2) settings文件配置本地仓库 3)settings配置远程仓库地址 4)配置maven工程的基础JDK版本 5)确认JDK环境变量配置没问题,配置maven的环境变量 验证…...

界面控件DevExpress.Drawing图形库早期增强功能分享

众所周知&#xff0c;DevExpress在v22.2发布周期中引入了全新的DevExpress.Drawing图形库&#xff08;并且已经在随后的小更新中引入了一系列增强功能&#xff09;。 在这篇博文中&#xff0c;我们将总结在DevExpress v23.1中解决的一些问题&#xff0c;以及在EAP构建中为以下…...

Semantic Kernel 入门系列:Connector连接器

当我们使用Native Function的时候&#xff0c;除了处理一些基本的逻辑操作之外&#xff0c;更多的还是需要进行外部数据源和服务的对接&#xff0c;要么是获取相关的数据&#xff0c;要么是保存输出结果。这一过程在Semantic Kernel中可以被归类为Connector。 Connector更像是…...

Maven介绍-下载-安装-使用-基础知识

Maven介绍-下载-安装-使用-基础知识 Maven的进阶高级用法可查看这篇文章&#xff1a; Maven分模块-继承-聚合-私服的高级用法 文章目录 Maven介绍-下载-安装-使用-基础知识01. Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型…...

Ansible环境搭建,CentOS 系列操作系统搭建Ansible集群环境

Ansible是一种自动化工具&#xff0c;基于Python写的&#xff0c;原理什么的就不过多再说了&#xff0c;详情参考&#xff1a;https://www.itwk.cc/post/403.html https://blog.csdn.net/qq_34185638/article/details/131079320?spm1001.2014.3001.5502 环境准备 HOSTNAMEIP…...

Django基础

1.Django基础 路由系统视图模板静态文件和媒体文件中间件ORM&#xff08;时间&#xff09; 2.路由系统 本质上&#xff1a;URL和函数的对应关系。 2.1 传统的路由 from django.contrib import admin from django.urls import path from apps.web import viewsurlpatterns …...

HTML,url,unicode编码

目录标题 HTML实体编码urlcode编码unicode编码小结基础例题高级例题 HTML实体编码 实体表示&#xff1a; 以&符号开始&#xff0c;后面跟着一个预定义的实体的名称&#xff0c;或是一个#符号以及字符的十进制数字。 例&#xff1a; <p>hello</p> <!-- 等同…...

Hbase-热点问题(数据存储倾斜问题)

1. 危害 某一台regionserver消耗过多&#xff0c;承受过多的并发量&#xff0c;时间长机器性能下降&#xff0c;甚至宕机 2. 解决 可以通过设计rowkey预分区的方法解决 比如可以预分区120个&#xff0c;1月的数据存到1-10分区&#xff0c;每个月的数据存到10个分区&#xff…...

一个基于Java线程池管理的开源框架Hippo4j实践

线程池痛点 线程池是一种基于池化思想管理线程的工具&#xff0c;使用线程池可以减少创建销毁线程的开销&#xff0c;避免线程过多导致系统资源耗尽。在高并发以及大批量的任务处理场景&#xff0c;线程池的使用是必不可少的。线程池常见痛点&#xff1a; 线程池随便定义&…...

源码解析Flink源节点数据读取是如何与checkpoint串行执行

文章目录 源码解析Flink源节点数据读取是如何与checkpoint串行执行Checkpoint阶段StreamTask类变量actionExecutor的实现和初始化小结 数据读取阶段小结 总结 源码解析Flink源节点数据读取是如何与checkpoint串行执行 Flink版本&#xff1a;1.13.6 前置知识&#xff1a;源节点…...

进阶:Docker容器管理工具——Docker-Compose使用

文章目录 前言Compose大杀器编排服务 1、docker-compose安装curl方式安装增加可执行权限查看版本 2、Docker-compose.yaml命令3、 docker-compose实战4、Docker网络路由docker的跨主机网络路由**问题由来**:方案两台机分别配置路由表ip_forward配置 总结 前言 容器的管理工具&…...

策略模式(Strategy)

策略模式是一种行为设计模式&#xff0c;就是定义一系列算法&#xff0c;然后将每一个算法封装起来&#xff0c;并使它们可相互替换。本模式通过定义一组可相互替换的算法&#xff0c;实现将算法独立于使用它的用户而变化。 Strategy is a behavioral design pattern that def…...

webpack基础知识十:与webpack类似的工具还有哪些?区别?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割&#xff0c;组织和打包应用。每个模块完成一个特定的子功能&#xff0c;所有的模块按某种方法组装起来&#xff0c;成为一个整体(bundle) 在前端领域中&#xff0c;并非只有webpack这一款…...

分享kubernetes部署:基于Ansible自动安装kubernetes

基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例&#xff1a; 开放端口&#xff1a; 控制平面节点 工作节点 请按如上中规定的开放端口&#xff0c;或关闭防火墙&#xff1a; systemctlstopfirewalld&&\ systemctldisablefirewalld 安装常用工具 sudo…...

【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群

文章目录 一、集群架构规划信息二、系统初始化准备(所有节点同步操作)三、安装kubeadm(所有节点同步操作)四、初始化K8S集群(master节点操作)五、添加Node节点到K8S集群中六、安装Calico网络插件七、测试CoreDNS可用性 一、集群架构规划信息 pod网段&#xff1a;10.244.0.0/16…...

c++--二叉树应用

1.根据二叉树创建字符串 力扣 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省略所有不影响字符…...

以太网DHCP协议(十)

目录 一、工作原理 二、DHCP报文 2.1 DHCP报文类型 2.2 DHCP报文格式 当网络内部的主机设备数量过多是&#xff0c;IP地址的手动设置是一件非常繁琐的事情。为了实现自动设置IP地址、统一管理IP地址分配&#xff0c;TCPIP协议栈中引入了DHCP协议。 一、工作原理 使用DHCP之…...

如何高效利用孔祥仁线性代数网课?我的实战笔记与技巧分享

如何高效利用孔祥仁线性代数网课&#xff1f;我的实战笔记与技巧分享 线性代数作为数学领域的重要分支&#xff0c;在计算机科学、物理学、工程学等多个学科中都有广泛应用。对于许多学生来说&#xff0c;这门课程既抽象又充满挑战。孔祥仁老师的线性代数网课以其"零废话&…...

RAGFlow与Dify共存方案:同一台Win11机器如何用Docker隔离部署

RAGFlow与Dify共存方案&#xff1a;同一台Win11机器如何用Docker隔离部署 在AI应用开发领域&#xff0c;RAGFlow和Dify作为两款热门工具&#xff0c;分别擅长知识库构建和AI应用编排。许多开发者面临一个现实挑战&#xff1a;如何在本地开发环境中同时运行这两个系统&#xff1…...

seo优化机构怎样选择才合适_什么是seo优化机构

SEO优化机构怎样选择才合适_什么是SEO优化机构 在当今的数字化时代&#xff0c;拥有一个高效的网站已经不再是企业竞争力的唯一标准&#xff0c;更重要的是这个网站能够在搜索引擎上获得良好的排名。这就是搜索引擎优化&#xff08;SEO&#xff09;的重要性所在。选择一个合适…...

Agent在零售行业能解决哪些痛点?——深度解析零售企业智能自动化转型路径

在2026年零售行业加速迈向智能化的背景下&#xff0c;AI Agent&#xff08;人工智能智能体&#xff09;已不再仅仅是技术实验室的产物&#xff0c;而是演变为重构行业价值链的核心驱动力。传统的零售运营长期受困于人力密集型模式&#xff0c;面临着全球化运营复杂度高、数据孤…...

HunyuanVideo-Foley快速入门:VSCode远程开发与模型调试指南

HunyuanVideo-Foley快速入门&#xff1a;VSCode远程开发与模型调试指南 1. 前言&#xff1a;为什么选择VSCode远程开发&#xff1f; 如果你正在使用HunyuanVideo-Foley这类音效生成模型&#xff0c;可能会遇到这样的困扰&#xff1a;本地机器性能不足&#xff0c;而云服务器虽…...

LibreCAD:完全免费的2D CAD软件终极指南,告别昂贵许可证

LibreCAD&#xff1a;完全免费的2D CAD软件终极指南&#xff0c;告别昂贵许可证 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse…...

Go性能剖析pprof工具使用

Go语言凭借其高效的并发模型和简洁的语法&#xff0c;成为众多开发者的首选。随着项目规模扩大&#xff0c;性能问题逐渐显现。如何快速定位性能瓶颈&#xff1f;Go内置的pprof工具正是解决这一问题的利器。本文将带你深入了解pprof的核心功能&#xff0c;助你轻松优化代码性能…...

3大核心功能解放明日方舟玩家双手:MAA自动化助手全攻略

3大核心功能解放明日方舟玩家双手&#xff1a;MAA自动化助手全攻略 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gi…...

Jimeng LoRA环境部署教程:Python+Torch+CUDA兼容性避坑与版本匹配指南

Jimeng LoRA环境部署教程&#xff1a;PythonTorchCUDA兼容性避坑与版本匹配指南 1. 项目简介 Jimeng LoRA&#xff08;即梦LoRA&#xff09;是一个专门为LoRA模型测试设计的轻量级文本生成图像系统。这个项目的核心价值在于它能让你只用加载一次基础模型&#xff0c;然后快速…...

InoDriverShop参数设置避坑指南:如何避免伺服系统调试中的常见错误

InoDriverShop参数设置避坑指南&#xff1a;如何避免伺服系统调试中的常见错误 伺服系统调试是工业自动化领域中的关键环节&#xff0c;而InoDriverShop作为一款功能强大的伺服驱动配置工具&#xff0c;其参数设置的准确性直接影响到设备的运行性能。本文将深入剖析新手工程师…...