数组转二叉树的一种方法-java(很特殊)

上代码

  1. Node节点的代码

public class ThreadNode {private int data;private ThreadNode left;private boolean leftTag; // 左子节点是否为线索private ThreadNode right;private boolean rightTag; // 右子节点是否为线索// ... 省略get和set方法// ... 省略构造方法// ... 省略toString方法
}

二叉树的实体


public class ThreadTree {private ThreadNode root; // 根节点private int size; // 大小private ThreadNode pre = null; // 线索化的时候保存前驱public ThreadTree() {this.root = null;this.size = 0;this.pre = null;}public ThreadTree(int[] data) {this.pre = null;this.size = data.length;this.root = createTree(data, 1); // 创建二叉树}
}

核心方法如下:

	/*** 创建二叉树,将一个数组变为二叉树,并且是按照数组元素的顺序* 此方法非常的独特* @param data* @param index* @return*/public ThreadNode createTree(int[] data, int index) {//System.out.println(index);if (index > data.length) {return null;}ThreadNode node = new ThreadNode(data[index - 1]);ThreadNode left = createTree(data, 2 * index);ThreadNode right = createTree(data, 2 * index + 1);node.setLeft(left);node.setRight(right);return node;}

测试代码如下:

public class ThreadTreeTest {public static void main(String[] args) {int[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};ThreadTree tree = new ThreadTree(data); // 创建普通二叉树}
}

最终tree的数据结构如下图所示:
在这里插入图片描述
特殊的地方:按照数组中元素的顺序依次放置在tree的节点上

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

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

相关文章

《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)

文章目录 2.1 同态加密2.1.1 基础知识2.1.2 主要案例:云计算数据分析2.1.3 拓展案例 1:医疗数据分析2.1.4 拓展案例 2:金融风险评估 2.2 安全多方计算(SMC)2.2.1 基础知识2.2.2 主要案例:跨机构金融数据共享…

不要被带偏了,只靠运动减肥的效果极其有限;数据告诉你,不同减肥方式的真正效果

很多朋友问只靠运动是否能够达到减肥目标。 我们先看Chat GPT4的回答: 仅靠运动来成功减肥是可能的,但通常效果有限,而且比较困难。 减肥的基本原理是消耗的热量必须超过摄入的热量,从而产生能量赤字,使身体开始消耗…

已创建IAM子用户,添加云监控权限不生效

云上已创建IAM子用户,添加云监控权限不生效,如何解决。 此问题与权限配置有关,一般为IAM子帐号权限不足,需检查IAM配置的权限。 管理员使用主账户登录管理控制台。在统一身份认证服务,左侧导航窗格中,单击…

[VulnHub靶机渗透] Fowsniff

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

Java 学习和实践笔记(11)

三大神器&#xff1a; 官方网址: http://www.jetbrains.com/idea/ 官方网址: https://code.visualstudio.com/ 官方网址: http://www.eclipse.org 装好了idea社区版&#xff0c;并试运行以下代码&#xff0c;OK&#xff01; //TIP To <b>Run</b> code, press &l…

这可能是最全面的计算机网络面试八股文了

面试网站&#xff1a;topjavaer.cn 目录&#xff1a; 网络分层结构三次握手两次握手可以吗&#xff1f;四次挥手第四次挥手为什么要等待2MSL&#xff1f;为什么是四次挥手&#xff1f;TCP有哪些特点&#xff1f;说说TCP报文首部有哪些字段&#xff0c;其作用又分别是什么&…

一文学习python中编码和解码

学习目录 1 什么是编码和解码 2 编解码基本原理 3 python的默认编码 4 什么是10进制/2进制/8进制/16进制&#xff1f; 5 python的字符串utf-8编解码 5.1 使用str.encode()编码 &#xff0c;str.decode()解码 5.2 解码的乱码问题 5.3 16进制字符串转为普通字符串 6 python…

为什么录屏没有声音?深入解析,对症下药!

随着科技的发展&#xff0c;录屏成为了一种越来越受欢迎的方式&#xff0c;可以用来录制游戏、课程、演示等内容。然而&#xff0c;很多人在使用录屏软件的时候&#xff0c;都会遇到一个问题&#xff1a;录屏没有声音。那么为什么录屏没有声音呢&#xff1f;接下来&#xff0c;…

NumPy模块完结篇:深入探讨和高效利用【第85篇—NumPy模块】

NumPy模块完结篇&#xff1a;深入探讨和高效利用 NumPy是Python中用于科学计算的核心库之一&#xff0c;提供了高性能的多维数组对象&#xff08;numpy.ndarray&#xff09;以及许多用于操作这些数组的函数。在前面的几篇博客中&#xff0c;我们介绍了NumPy的基础知识、数组操…

第三百五十一回

文章目录 1. 概念介绍2. 获取方法3. 示例代码4. 对比与总结4.1 横向对比4.2 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍获取当前时区.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们使用的北京…

前端面试必备八股文——HTMLCSS

HTML src和href的区别 src和href都是用来加载外部资源&#xff0c;区别如下 src当浏览器解析到该元素时&#xff0c;会暂停其他资源的加载和处理&#xff0c;直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置&#xff0c;将其指向的资源下载应用到文档内&#…

WebServer 之 http连接处理(下)

目录 ✊请求报文--解析 流程图 && 状态机 状态机 -- 状态转移图 主状态机 从状态机 http 报文解析 HTTP_CODE 含义 从状态机 逻辑 主状态机 逻辑 &#x1f41e;请求报文--响应 基础API stat mmap iovec writev 流程图 HTTP_CODE 含义(2) 代码分析 …