首页 > 其他分享 >树的增删改查等操作

树的增删改查等操作

时间:2024-10-31 16:16:27浏览次数:6  
标签:左子 遍历 删除 右子 改查 增删 操作 root 节点

有序二叉树

左边节点值小于当前节点,右边节点值大于当前节点

插入

判断root是否为空

  • root为空 root = node

  • 如果root不为空

定义index游标,初始值==root

判断index和node节点值的大小

直到插入

所有二叉树的遍历

广度优先遍历

从上到下依次遍历,同一层从左到右遍历每个节点

借助队列实现:

  • 根节点入队
  • 只要队列不是空,就从队列中取数据
  • 取出节点,并将该取出的节点的 左右孩子 入队

深度优先遍历

都是先左后右,看父

  • 先序遍历

父 左 右 A B C

  • 中序遍历

左 父 右 B A C

  • 后序遍历

左 右 父 B C A

三个三个看

例:中序遍历:

删除

黑色表示要删除的节点;蓝色表示父节点;绿色表示孩子

删除叶子节点

1、找到要删除的节点 target

        没有的话不删

2、找要删除节点的父节点 parent

  • 如果没有父节点 root = null

  • 如果有父节点

        判断目标节点是父节点的左孩子还是右孩子

            parent.left = null      parent.right = null

删除只有一棵子树的节点

1、找到要删除的节点 target

        没有的话不删

2、找要删除节点的父节点 parent

  • 如果没有父节点 root = null
    • 判断目标节点是左子树还是右子树
    • 判断目标节点是父节点的左孩子还是右孩子
  • 如果有父节点
    • 判断目标节点是父节点的左孩子还是右孩子
      • 判断目标节点有左子树还是右子树

删除有两棵子树的节点(替换)

1、找到要删除的节点 target

        没有的话不删

2、找目标节点左子树的最大值 或 右子树的最小值

3、目标节点左子树的最大值 或 右子树的最小值 ,替换target的值

4、删除目标节点左子树的最大值 或 右子树的最小值

标签:左子,遍历,删除,右子,改查,增删,操作,root,节点
From: https://blog.csdn.net/qq_73993301/article/details/143377288

相关文章

  • 总结 JavaScript 中8种数组常用的操作 API,array.push,pop,shift,unshift,slice,splice
    前言JavaScript中数组是一个重要的数据结构,它相比于字符串有更多的方法,在一些算法题中我们经常需要将字符串转化为数组,使用数组里面的API进行操作。本篇文章总结了JavaScript中有许多数组常用的操作API,以下是一些常见的操作及其示例:1.push():在数组末尾添加一个或多个元素,并......
  • 软考机考操作指南,一篇带你学会软考机考操作!
    1、如何标记试题、切换试题2、简答题如何查看历史记录、切换输入法3、选做题,已作答后如何更换选做题4、简答题、论文,如何插入图表、公式、全屏作答论文题,可以通过点击“全屏”按钮进行全屏作答;“全屏”按钮变更为“原屏”按钮,点“原屏”按钮则可以返回原始作答界面。5、认识绘图工......
  • 揭秘!SpringBoot与MongoDB连接池配置,高效数据库操作的秘密武器
    在SpringBoot中整合MongoDB并配置连接池,可以通过以下步骤实现。我们将使用SpringDataMongoDB来简化与MongoDB的交互,并配置连接池以提高性能和资源利用率。一、添加依赖首先,在你的pom.xml文件中添加必要的依赖:<dependencies><!--SpringBootStarterDataMongoDB-......
  • 能操控电脑的 Computer Use 究竟是什么?万能胶水、旧世界操作员,还是无所不在的智能?| 播
       「编码人声」是由「RTE开发者社区」策划的一档播客节目,关注行业发展变革、开发者职涯发展、技术突破以及创业创新,由开发者来分享开发者眼中的工作与生活。 无论你是否熟悉FunctionCall、ToolUse或者RPA,都可能刷到了Claude推出「能像人一样操控电脑」的Comput......
  • 国产操作系统成功安装微信
    微信目前几乎是上网必备软件,不仅在移动设备上普遍使用,也因其文件处理能力强、与移动设备端可同步,其在电脑上也普遍使用。随着国产操作系统的蓬勃发展,使用该系统的用户越来越多,但微信官网上的微信安装包没有支持国产操作系统的。经过本人的长时间搜索下载与安装试用,发现了一个可......
  • 交直流充电桩检测操作和维护
    随着电动汽车的普及,充电桩的需求也日益增长。交直流充电桩是电动汽车充电的重要设备,其性能和安全直接影响到电动汽车的正常使用。因此,对充电桩进行定期的检测操作和维护是非常必要的。一、交直流充电桩检测操作外观检查:检查充电桩的外观是否有损坏,包括外壳、显示屏、按键等部分......
  • 顺序表的基本操作以应用
    顺序表的基本操作任务描述本关任务:要求针对顺序存储的线性表完成四个操作函数,分别实现线性表中数据的插入、删除与查找等功能。相关知识为了完成本关任务,你需要掌握:顺序表的基本操作。顺序表的基本操作线性表是最基本、最简单、也是最常用的一种数据结构。线性表结构中,数......
  • 【全】Go 操作Redis数据库
    操作Redis数据库在Go语言中是一项常见的任务,尤其是在构建高性能应用时。以下是一个关于如何使用Go操作Redis的详细指南,涵盖了从安装、配置到不同数据类型操作的各个层次(初级、中级、高级)。1.Go操作Redis实战介绍Redis是一个开源的内存数据结构存储,支持多种数......
  • 操作系统——进程同步互斥经典题目
    操作系统——进程同步互斥经典题目前言这里是操作系统课程中老师布置的作业,主要是关于进程同步互斥的考研真题。题目题目一有4个进程P1、P2、P3、P4。要求P1必须在P2、P3开始前完成,P2、P3必须在P4开始前完成,且P2和P3不能并发执行。试写出这4个进程的同步互斥算法。解答:......
  • 如何在麒麟操作系统上进行网络共享和文件传输
    在麒麟操作系统上进行网络共享和文件传输的步骤:一、设置共享文件夹;二、配置网络共享权限;三、使用网络传输工具。首先,我们需要创建一个共享文件夹,以便其他用户可以访问和下载其中的文件。一、设置共享文件夹首先,我们需要创建一个共享文件夹,以便其他用户可以访问和下载其中的文......