用java 实现二叉树创建

news/2024/3/29 18:34:30/文章来源:https://blog.csdn.net/qq_42751978/article/details/130281386

 

二叉树是数据结构中的一个重要的概念,二叉树的概念最早由 Linus Torvalds在1958年提出。他给出了一个树形数据结构,可以用来存储二叉树。每个节点的左子树和右子树都是空,中间层是子树。在一个给定的空间中,每一个节点都有两个左右子树。 在 Java中,我们可以用类似的方法来创建二叉树,但是这个方法只支持最简单的二叉树类型。例如,对于下面这种类型的二叉树,它需要四个节点:左子树、右子树和根结点。如果我们想创建一个节点为树根的二叉树,则需要更复杂的方法。 在本文中,我们将介绍如何在 Java中使用树根节点来创建二叉树。我们首先使用简单的树根节点来创建二叉树。然后我们将使用类似的方法来创建更复杂的二叉树,该方法将支持更多类型的数据结构。在这里,我们将提供一个简单而直观的实例来展示如何使用树根来创建二叉树上的节点。 在本例中,我们将创建两个二叉树上节点:左子树和右子树。在左子树中,我们有一个左子树根;在右子棵中,我们有一个右子树根。

  • 1.定义两个二叉树节点

    我们首先需要定义两个节点。对于左子树和右子树,我们可以使用以下方法: 在这里,我们只需要定义两个节点即可,即左子树和右子树。 我们可以使用以下方法来创建左子树: 在这里,我们定义了一个对象 submit。下面是一个简单的示例代码,展示了如何使用此方法来创建左、右子树节点。要使用此方法创建左、右子树节点,请按如下方式操作: 如果我们想要创建一个包含根节点的二叉树,那么我们可以在这里使用以下方法: 在这里,我们使用了三种不同的方法来定义左、右子树节点。它们都是相同的: 对于右子树上的元素,我们还需要定义一个子节点:它将被存储在中间层上。 左子树和右子棵都是空的。它们都是完全相同的节点类型:左、右子树根;根结点。它们的区别在于左、右子树根所包含的元素类型不同。 创建两个二叉树上的节点后,我们需要定义中间层和其上的元素。下面是如何实现这种操作: 在这里,我们使用了以下方法来创建中间层和其上的元素: 上面代码中用了两个方法来实现这一操作。其中,第一个方法定义了左子树和右子树中所有元素类型;第二个方法创建了中间层和其上的所有元素类型。上面代码中使用了两个不同的方法来实现这一操作,但实际上,我们只需要一个方法就可以完成所有这些操作了:

  • 2.定义节点的左子树和右子树

    我们要使用一个叫做“根节点”的概念。根节点是二叉树中的一个结点,它有两个属性:左子树和右子树。因此,我们需要定义左子树和右子树,这是我们接下来要做的。 首先,我们需要定义两个变量: 左子树(left):从左到右的第一个节点。 换句话说,左子树有两个子节点,而右子树有三个子节点。 定义了左子树和右子树之后,我们需要使用它们来存储它们。因为我们只需要存储两个节点的左子树和右子树,所以我们只需要用“&”将它们连接起来。然后,我们将使用“*”来在左子树和右子棵中添加更多的值。 最后,我们将为这两个节点创建一个数组: 我们将使用以下方法来定义这两个数组: 在这里,我们想创建一个包含两个指针的数组: 这个数组是一个整型数据结构,它是左子树和右子树的指针。注意,叶子节点不包含任何值。在这个例子中,左子树根是一个整型数据结构,它有三个子节点:左子、中子和右子。左子树中的第一个节点是根节点。这个根是一个整型数组。在这里,我们想使用一个叫做“&”的函数来访问“根”和“叶子”节点之间的所有内容,并使用&来将它们连接起来。它包含两个值:左子值和右子值。

  • 3.使用新的树根节点来创建两个新的二叉树

    在这种情况下,我们将使用新的树根节点来创建两个新的二叉树,但是在本例中,我们没有使用这个树根。我们要做的是创建两个新的树根,并使用它们来创建两个新的二叉树。 首先,我们从根节点开始。我们会在这个节点上创建一个左子树根和一个右子树根。在本例中,左子树和右子树都是空的,因此我们不需要创建根结点。但是在本例中,左子树是有左子树根和右子树根的。这是因为左子树的中间层有一个右子树根。

  • 4.检查一下结果

    我们现在可以检查一下结果: 如果我们要创建一个不是空的二叉树上的节点,我们需要对每个节点添加一个指针。这两个二叉树都是空的。但是它们的中间层都有一个指针:左子树指针指向了左子树根,而右子树指针指向了右子树根。如果你想在二叉树中存储不同类型的数据结构,你需要创建一个类型为“基本类型”的二叉树。下面是一个使用基本类型创建二叉树的示例代码: 上面这个示例代码很简单,但是它用到了两个不同类型的数据结构:数组和字符串。如果你想查看这些数据结构是什么类型,只需要在这些例子中调用这些方法。因为它们是不同类型的数据结构,所以你需要使用不同类型的方法来访问它们。例如,在上面的代码中,我们可以使用链表来访问数组。

以下是Java实现二叉树的示例代码:


```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class BinaryTree {
public TreeNode root;
public BinaryTree() {
root = null;
}
public void insert(int val) {
root = insert(root, val);
}
private TreeNode insert(TreeNode node, int val) {
if (node == null) {
node = new TreeNode(val);
} else {
if (node.right == null) {
node.right = insert(node.right, val);
} else {
node.left = insert(node.left, val);
}
}
return node;
}
}
```
在上面的代码中,我们定义了一个`TreeNode`类来表示二叉树节点,包含一个整数值和左右子节点。然后我们定义了一个`BinaryTree`类来表示二叉树,包含一个根节点。在`BinaryTree`类中,我们定义了一个`insert`方法来插入节点,它会递归地查找正确的位置来插入新节点。在插入节点时,我们首先检查当前节点是否为空,如果为空则创建一个新节点。否则,我们将新节点插入到当前节点的左子树或右子树中,具体取决于当前节点是否有右子节点。最后,我们返回根节点。
使用示例:
```java
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(1);
tree.insert(9);
}
```
这样就创建了一个二叉树,它的根节点是5,左子树是3和1,右子树是7和9。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102747.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机雷达联合标定cam_lidar_calibration

文章目录 运行环境:1.1 ROS环境配置1)工作空间创建和编译2)官方数据集测试环境 2.1 在线标定1)数据类型2)标定板制作3)配置文件4)开始标定5)完整实现步骤 3.1 python版本选择3.2 rvi…

4年的测试工程师,你遇到过自身瓶颈期吗?又是怎样度过的?

从毕业到现在已经快4年啦,一直软件测试行业混迹。我不是牛人,但是自我感觉还算是个合格的测试工程师,有必要写下自己将近4年来的经历,给自我以提示,给刚入行的朋友提供点参考。 貌似这一点适应的行业最广,…

Java——二叉搜索树的后序遍历序列

题目链接 牛客在线oj题——二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围: 节点数量 0≤n≤1000 …

自习室管理系统的设计与实现(论文+源码)_kaic

摘要 近年来,随着高校规模的逐步扩大,学生对高校自习室座位的需求也在不断增加。然而,一些高校仍然采用人工管理学院自习室座位,这大大降低了管理效率。显然,开发一个成本低、占用资源少、能提高高校自习室座位管理效率…

Junit 5 如何使用 Guice DI

Guice 是一个依赖注入的小清新工具。 相比 Spring 的依赖管理来说,这个工具更加小巧,我们可以在测试中直接使用。 Junit 5 在 Junit 中使用就没有那么方便了,因为 Junit 没有 Guice 的注解。 你需要手动写一个类,在这个类中&a…

ABeam Insight | 智能制造系列(6):虚拟/增强现实(VR/AR)×智能制造

虚拟现实(VR)和增强现实(AR)的概念早在20世纪60年代就被提出,但由于当时的技术水平无法满足相关应用的需求,这些概念并没有引起广泛关注。直到近年来随着计算机技术的飞速发展,虚拟现实和增强现…

nodejs+vue 文旅旅游公司智能管理OA系统

通过本次设计,让我学到了更多的知识,而且在设计中会有一些问题出现,最后通过查阅资料和在老师和同学的帮助下完成了系统的设计和开发,使得这次系统的开发非常的有意义。同时通过这次系统的设计也让我明白了自己在哪方面有不足&…

【PWN刷题__ret2text】[CISCN 2019华北]PWN1

ret2text~ 前言 依旧是简单的ret2text 一、checksec查看 No canary found 没有开启栈溢出保护 二、IDA反汇编 双击进入func() 发现后门函数system("cat/flag");根据语义,函数提供了修改v1,判断v2是否等于11.28125,如…

项目沟通管理5大技巧 第4个很重要

1、充分使用twitter管理沟通模型 项目沟通会议可以充分使用witter的管理沟通模型,提高会议沟通效率。使用此模型,主要是有三步: 第一步:倾听,项目经理需要保持中立的立场,不先表态,让团队成员畅…

SAP ABAP 使用SICF发布HTTP API接口

一、SE24创建类:Z_HCX_HTTP 1、创建类: 2、切换到接口(interface)页签,输入IF_HTTP_EXTENSION ,回车。切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进…

STM32 产生随机数方式

STM32 产生随机数方式 C语言的stdlib.h库里的srand(unsigned seed)和rand(void)函数,可以配合产生伪随机数。其中srand(seed)产生算法种子,再由rand()通过算法产生随机数,产生的随机数在宏定义RAND_MAX范围内。如果seed不变,则产…

URL 转为QR code(二维码)

推荐一个良心的网站,能够免费地将url、text编码为二维码,而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图: 可以自己定义logo、颜色: 还能查看扫描历史等统计信息: 上述所有功能都是免…

【虚拟仿真】Unity3D打包WEBGL后播放视频(VideoPlayer组件)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 本篇文章实现Unity3D打包WEBGL后播放视频,如下图所…

VGG网络与中间层特征提取

1. 背景 VGG是常见的用于大型图片识别的极深度卷积网络, 这里主要介绍VGG网络预测在ImageNet数据集上的训练及预测。 2. ImageNet图像数据集简介 ImageNet包含了145W张224*224像素的三通道彩色图像数据集,图像划分为1000个种类。其中训练集130W张&…

Observability:添加免费和开放的 Elastic APM 作为 Elastic 可观察性部署的一部分 - 8.x

作者:David Hope 在最近的一篇博文中,我们向你展示了如何开始使用 Elastic 可观察性的免费开放层。 下面,我们将介绍你需要做些什么来扩展你的部署,这样你就可以开始免费从应用程序性能监控(APM)或跟踪集群…

可算是熬出头了,测试4年,费时8个月,入职阿里,涨薪14K

前言 你的努力,终将成就无可替代的自己。 本科毕业后就一直从事测试的工作,和多数人一样,最开始从事点点点的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。 一年半…

为什么你永远不应该在CSS中使用px来设置字体大小

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。 在Josh Collinsworth的博客文章“永远不要用px作为字体大小”中,作者讨论了为什么不…

Ceph入门到精通-Ceph 编排器简介

第 1 章 Ceph 编排器简介 作为存储管理员,您可以将 Ceph 编排器与 Cephadm 实用程序搭配使用,能够发现设备并在 Red Hat Ceph Storage 集群中创建服务。 1.1. 使用 Ceph Orchestrator Red Hat Ceph Storage Orchestrators 是经理模块,主要…

C语言函数大全-- o 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- o 开头的函数 1. obstack_init,obstack_free,obstack_alloc,obstack_blank,obstack_grow 1.1 函数说明 函数声明函数功能void obstack_init(struct obstack *obstack_ptr);它是 POSIX …

TypeScript自学笔记

目录 1.什么是Ts? 1.1 设计公司:微软 1.2 TS概述 1.3 TS是静态类型 JS是动态类型 1.4 TS是强类型语言 JS是弱类型语言 2.TypeScript编译器 2.1 安装 2.2 TS自动编译和编译选项设置 3.TS的数据类型 3.1 基础数据类型number、string、boolean 3.2 Arrays&a…