Java实现二叉树建立以及三种遍历

二叉树的建立与遍历 【问题描述】 以二叉链表的形式创建二叉树(不超过20个结点),并编写二叉树的遍历算法,实现二叉树的三种遍历。 【输入形式】 输入二叉树的结点信息(以先序建立的方式)。 【输出形式】 输出二叉树的三种遍历序列。 阅读详情

Java实现二叉树建立以及三种遍历

public class BinTree {
	static int[] array = {1,2,3,4,5,6,7,8,9};
	static List<Node> nodelist = null;
	
	/*二叉树节点*/
	public static class Node {
		Node leftChirld;
		Node rightChirld;
		int data;
		public Node(int data) {
			leftChirld=null;
			rightChirld=null;
			this.data=data;
		}
	}
	
	/*构建二叉树*/
	public static void build() {
		nodelist=new LinkedList<Node>();
		
		for(int node=0;node<array.length;node++) {
			nodelist.add(new Node(array[node]));
		}
		
		for(int index=0;index<array.length/2-1;index++) {
			nodelist.get(index).leftChirld = nodelist.get(index*2+1);
			nodelist.get(index).rightChirld = nodelist.get(index*2+2);
			
		}
		
		int last = array.length/2-1;
		nodelist.get(last).leftChirld = nodelist.get(last*2+1);
		
		/*判断最后的节点是否有右孩子,有的话就进行添加*/
		if (array.length%2==1) {
			nodelist.get(last).rightChirld = nodelist.get(last*2+2);
		}

	}
	
	/*先序遍历*/
	public static void proOrder(Node node) {
		if (node==null) {
			return;
		}
		
		System.out.println(node.data+"");
		proOrder(node.leftChirld);
		proOrder(node.rightChirld);
	}
	
	
	/*中序遍历*/
	public static void inOrder(Node node) {
		if (node==null) {
			return;
		}
		inOrder(node.leftChirld);
		System.out.println(node.data+"");
		inOrder(node.rightChirld);
	}
	
	/*后序遍历*/
	public static void postOrder(Node node) {
		if (node==null) {
			return;
		}
		
		postOrder(node.leftChirld);
		postOrder(node.rightChirld);
		System.out.println(node.data+"");
		
	}
	
	
	

	public static void main(String[] args) {
		BinTree binTree = new BinTree();
		binTree.build();
		
		/*获取根节点进行遍历*/
		Node root = nodelist.get(0);
		
		System.out.println("先序遍历:");  
		binTree.proOrder(root);
		System.out.println("");
		
		System.out.println("中序遍历:");  
		binTree.inOrder(root);
		System.out.println("");
		
		
		System.out.println("后序遍历:");  
		binTree.postOrder(root);
		
	}

}
【Unity 实用工具篇】✨| 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感 在一个游戏中,游戏手感对于游戏的整体游玩体验是非常重要的,而游戏手感中有一个很重要的点:打击感 那本篇文章就来讲一下打击感中的受击反馈部分。 在游戏中经常会用到攻击敌人,敌人扣血,执行某些受击功能的执行,尤其是对于有战斗场景的游戏来说,这就是标准的受击反馈。 所以引出本篇文章的主角:受击插件 Feel 的使用,2D和3D游戏都可以使用。 阅读详情

相关推荐

MDPI期刊投稿全流程解析:从注册到提交的实用指南

本文详细解析了向MDPI期刊投稿的全过程,从注册账号、完善个人资料、上传稿件,到填写作者信息、推荐审稿人及提交附信等关键步骤。指南强调了使用机构邮箱、遵循期刊模板、认真准备Cover Letter等实用技巧,旨在帮助作者高效、规范地完成投稿,避免常见错误,提升稿件处理效率。

weixin_29250403的博客 924

java实现二叉树的创建和遍历

【代码】java实现二叉树的创建和遍历。

qq_55278081的博客 511

Axure RP9汉化+授权全攻略:从下载到激活一步到位(附最新授权码)

本文提供Axure RP9从下载安装到界面汉化的完整指南,帮助设计师和产品经理快速上手这款原型设计工具。详细讲解了如何安全获取软件、执行汉化操作、理解核心界面布局,并介绍了创建交互原型和生成HTML文件的基础步骤,助力用户高效开展设计工作。

cuda7parallel的博客 1140

用java 实现二叉树创建

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

花生日记 2973

Petalinux实战:3种方法调试AXI UART Lite设备(含minicom/screen/直接寄存器操作对比)

本文详细介绍了在Zynq平台上使用Petalinux调试AXI UART Lite设备的三种实用方法:用户空间工具(minicom/screen)、应用层程序(termios配置)和底层寄存器直接操作。文章对比了各方法的优缺点与适用场景,并重点解析了设备树配置、驱动加载等关键环节,帮助开发者快速定位并解决串口通信中的常见问题。

weixin_29190169的博客 432

哨兵2植被参数反演避坑指南:SNAP中10m/20m分辨率选择与缺失波段处理

本文深入解析了使用SNAP软件进行哨兵2号植被参数反演时的关键操作与决策。核心在于理解SNAP生物物理处理器NNET10m与NNET20m的架构差异,根据是否需要反演冠层叶绿素含量(Cab)等参数,明智选择10米或20米分辨率工作流。文章详细指导了大气校正、波段重采样及处理L2A数据中B01波段“缺失”等常见问题的解决方案,为生态监测与精准农业应用提供清晰的避坑指南和完整实战流程。

wdx01234567的博客 262

【数据结构】用Java实现一棵二叉树

这里给出从前序与中序遍历序列构造二叉树、从中序与后序遍历序列构造二叉树以及二叉树的基本操作。

qq_53869058的博客 4665

GraphSense介绍

GraphSense是一个跨账本加密货币分析平台 它的介绍在这里 代码也是开源的 graphsense-dashboard 用于交互式加密货币分析的Web仪表板。 可以看导进数据的情况 graphsense-transformation 基于spark/cassandra/java服务运行 GraphSense转换管道,用于将加密货币的区块/交易/标签等数据导入,可以看它指定的json格式: t...

幸福诗歌的博客 1081

【Java】二叉树

二叉树(Binary Tree)是一种常见的树形结构,它由节点(Node)和节点之间的关系构成。每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树中的每个节点可以为空(null)。

qq_61635026的博客 3613

Linux蓝牙开发实战:5分钟搞懂BlueZ与D-Bus通信原理(附D-Feet调试技巧)

本文深入解析Linux下BlueZ蓝牙协议栈与D-Bus通信的核心机制,提供实战开发指南。通过D-Bus对象模型、信号订阅等关键技术点的详细讲解,配合D-Feet工具的高效调试技巧,帮助开发者快速掌握蓝牙设备管理与性能优化方法,提升物联网开发效率。

3a9bq4r8t2y的博客 330

CUDA 12.1环境下的动态库链接修复:从libcusparse.so.12的undefined symbol错误到libnvJitLink.so.12的正确加载

本文详细解析了在CUDA 12.1环境下,PyTorch因libcusparse.so.12找不到libnvJitLink.so.12中的__nvJitLinkAddData_12_1符号而报错的根本原因。通过诊断动态链接过程,提供了创建符号链接、修改环境变量等三种解决方案,并深入探讨了nvJitLink组件的作用及环境配置的最佳实践,帮助开发者彻底解决此类动态库链接问题。

c8d9e0f1的博客 206

java创建二叉树

最近有人问二叉树问题,这里写点文章记录一下。 如下二叉树,如何用java在代码里创建出来? 关注这方面的,大概都知道一个二叉树有前序、中序、后序,层序共4种遍历方法。 不清楚的看我的另一篇文章:https://blog.youkuaiyun.com/weixin_36939535/article/details/115910919 这里可以用一个数组把来表示上图二叉树:[1, 2, 0, 3, 4, 0, 0, 0, 5, 6, 0, 0, 7, 8, 9, 0, 0, 0, 0] 定义一个树的节点 public

蜗牛小将 8286

无刷电机FOC硬件电路设计

本文先对MIT无刷电机FOC硬件电路分析做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章软件程序在我另外一个博客【嵌入式–伺服电机】MIT无刷电机FOC驱动程序分析。

qq_35635374的博客 574

java实现二叉树的构建以及3种遍历方法

目录:  1.把一个数组的值赋值给一颗二叉树  2.具体代码  1.树的构建方法  package cn.com.niuke.shujujiegou; import java.util.ArrayList; import java.util.List; public class BinaryTreeTraverse { private int[] arr = {

skyxmstar的博客 480

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java按先根序列建立二叉树并遍历二叉树

Java数据结构与算法——二叉树 例题: 1.算法按先根序序列建立二叉树的二叉链表算法,按下列顺序读入字符: ABC##DE#G##F### ( 1 )从键盘输入二叉树的结点信息,建立二叉树的存储结构; ( 2 )在建立二叉树的过程中按照二叉树先序方式建立。 2.依次使用二叉树的先根次序、中根次序、后跟次序遍历二叉树。 代码示例: import java.util.Scanner; public class Bnodept { //定义二叉树的存储结构 char data; Bnod

zzh2233的博客 1812

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 二叉树的高度_Java实现二叉树的建立、计算高度与递归输出操作示例

本文实例讲述了java实现二叉树的建立、计算高度与递归输出操作。分享给大家供大家参考,具体如下:1. 建立 递归输出 计算高度 前中后三种非递归输出public class tree_link {private int save = 0;private int now = 0;scanner sc = new scanner(system.in);/** 构造函数*/tree_link(){}/*...

weixin_39636102的博客 81

java 二叉树的高度_Java实现二叉树的建立、计算高度与递归输出操作示例|chu

本文实例讲述了Java实现二叉树的建立、计算高度与递归输出操作。分享给大家供大家参考,具体如下:1. 建立 递归输出 计算高度 前中后三种非递归输出public class Tree_Link { private int save = 0; private int now = 0; Scanner sc = new Scanner(System.in); /...

weixin_39692045的博客 365

java的二叉树遍历_java实现二叉树遍历的三种方式

本文实例为大家分享了java实现二叉树遍历的具体代码,供大家参考,具体内容如下二叉树如下:遍历结果如下:以下是实现代码:package binTree;import java.util.Stack;/*** @author bin.zhang* @version 2017年8月29日 上午10:22:01*/public class BinTreeTraversal {public static ...

weixin_29597551的博客 178

java实现二叉树的构建以及三种遍历方法(先序遍历,中序遍历,后续遍历)

目录:              1:模拟二叉树构建Node类并通过数据对其赋值;             2:具体代码实现; 1.模拟二叉树构建Node类并通过数据对其赋值 *树的构建方法: *具体代码实现(java代码): package tree; import java.util.LinkedList; import java.util.Lis

小元点点的博客 597

java创建二叉树及三种遍历方式的实现

简单介绍一下二叉树,二叉树是每个结点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。二叉树的遍历有三种情况,前序遍历、中序遍历和后序遍历,算法一般有两种,即递归和迭代循环。其中递归算法比较简单,代码量较少,但是迭代循环比较复杂,需要用栈进行操作,代码量大,程序耗时多,不建议用迭代进行二叉树遍历。 首先创建一个名为Bintree的类,类中先定义二叉树数据结构的一系列属性: 这里用Li...

qq_38883271的博客 1186

利用Java语言编写二叉树并用三种方式(前序、中序、后序)遍历树

如题:利用Java语言编写二叉树并用三种方式(前序、中序、后序)遍历树 分析: 1、创建一个空树类。 2、创建一个根节点类。 3、创建一个测试类。 4、利用递归的思想进行二叉树的遍历。 具体代码如下: 1、空树类: public class BinaryTree { // 空树 类 //设置一个根节点 TreeNode root; public void...

一只小白的奋斗历程的博客 525

二叉树的建立,以及递归前中后序遍历二叉树

测试用例如图: #include <stdio.h> #include <stdlib.h> #define TREE "+*E*D/CAB" typedef int dt; typedef struct NODE { dt data; struct NODE *lp; struct NODE ...

程序圆圆圆 339

java实现二叉树的遍历(递归,前序、中序以及后序)

1、二叉树的遍历 二叉树分为的遍历有三种,分别为前序、中序和后序遍历。 前序遍历是指:先输出父节点,然后是左子树,右子树; 中序遍历是指:先遍历左子树,然后父节点,然后右子树; 后序遍历是指:先遍历左子树,然后右子树,最后是父节点。 1、先定义节点 /** * 创建一个节点 */ @AllArgsConstructor @NoArgsConstructor @Data class Node{ private int num; private Node left;//左子节点,默认为nul

qq_44665283的博客 768

二叉树的三种基础遍历方式— java实现

二叉树的三种基础遍历方式有 前序遍历、中序遍历、后序遍历。

shallrelow的博客 1277

java实现二叉树的创建及三种遍历方式

java实现二叉树的创建及三种遍历方式 接口定义 public interface Tree { /** * 二叉树的创建 * @param arr * @return */ public List&lt;Node&gt; createBinTree(int[] arr); /** * 前序遍历 * @para...

hanliuxi4265的博客 1567
上一篇: Java递归解决全排列问题
下一篇: Java实现二叉树的基本运算
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值