Java实现二叉树的基本运算

二叉树基本算法 文章目录二叉树定义:一、递归遍历1、先序遍历2、中序遍历3、后序遍历4、递归序二、非递归遍历1、先序遍历2、中序遍历3、后序遍历三、二叉树按层遍历 二叉树定义: 二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。更多解释,详见堆和堆排序。 一、递归遍历 1、先序遍历 根左右。a,b,d,e,c,f,g /** * 二叉树:先序遍历。根-左-右 * * 经典递归写法 阅读详情

Java实现二叉树的基本运算

public class BinTree01 {

	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 int getHeight(Node node) {
		int treeheight = 0;
		int leftheight = 0;
		int rightheight = 0;
		if (node!=null) {
			leftheight = getHeight(node.leftChirld);
			rightheight = getHeight(node.rightChirld);
			treeheight=leftheight>=rightheight?leftheight+1:rightheight+1;
			
		}
		return treeheight;
	}
	
	/*计算二叉树叶子节点个数*/
	public static int  getLeafCount(Node node) {
		int num1;
		int num2;
		if (node==null) {
			return 0;
		} else if (node.rightChirld==null && node.leftChirld==null) {
			return 1;
		} else {
			num1=getLeafCount(node.leftChirld);
			num2=getLeafCount(node.rightChirld);
			return num1+num2;
					
		}
			}
	
	/*计算节点个数*/
	public static int  getNodeCount(Node node) {
		int num1,num2;
		if (node==null) {
			return 0;
		} else {
			num1=getNodeCount(node.leftChirld);
			num2=getNodeCount(node.rightChirld);
			return num1+num2+1;
			
		}
	}
	
	
	
	
	
	public static void main(String[] args) {
			BinTree01 binTree01 = new BinTree01();
			binTree01.build();
			Node root = nodelist.get(0);
			System.out.println("节点个数:");
			System.out.println(binTree01.getNodeCount(root));
			System.out.println("");
			System.out.println("叶子节点");
			System.out.println(binTree01.getLeafCount(root));
			System.out.println("");
			
			System.out.println("高度");
			System.out.println(binTree01.getHeight(root));
	}

}
树 二叉树 各种操作 删除叶节点 返回宽度 高度 等 这是我们在学习数据结构是上机实践编的小程序,现在想和大家分享,上面实现了二叉树的各种操作,如返回叶节点,宽度,高度,各种形式的遍历,查找,本程序中用到了很多递归,虽然这些教材上都有,我还是传上来了. 立即下载

相关推荐

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 267

四则运算(二叉树实现) Java

四则运算 GitHub仓库 功能 [完成] 使用 -n 参数控制生成题目的个数 [完成] 使用 -r 参数控制题目中数值的范围, 。该参数可以设置为1或其他自然数。 [完成] 生成的题目中计算过程不能产生负数 [完成] 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。 [完成] 程序一次运行生成的题目不能重复,生成的题目存入执行程序的当前目录下的Exercises.txt...

weixin_33943836的博客 1438

ISO26262功能安全--产品开发过程

目录 1.总体理解 2.概念阶段——吹牛,我们是打草稿的 2.1 相关项定义 2.2 HARA分析 2.3 功能安全目标 2.4 安全需求与安全概念 3. 系统阶段——闭门造神车,我们开始修炼 3.1 技术安全需求(TSC) 3.2 系统架构设计 3.3 安全分析与独立性分析 3.4 软硬件接口(HSI) 4. 硬件阶段——苦其心志,苦练经骨 4.1 硬件架构...

AgingMoon的博客 1万+

java 二叉树(十二)二叉树计算表达式

实现原理:把得到的逆波兰式进行逐个压入栈中,如:ab+c*ab+e/- 首先把a当作一个节点压入栈S中,然后继续吧b压入栈S中,当遇到+时,先把b弹出作为+的右孩子,把a 弹出作为+的左孩子。然后把+作为a和b的根节点,这样就形成了一颗树。然后把+压入栈S中,依次重复向S1中压入即可。 最后把得到的二叉树进行后序遍历计算,后序遍历的时候每遇到一个操作符就把操作符的左孩子和右孩子进行相应的操作即可

Sun_Ru的博客 2680

ChatGPT Plus账号被降智?3个实用检测方法+终极解决方案(附国内支付指南)

本文针对ChatGPT Plus账号性能下降问题,提供了3个科学检测方法和系统级解决方案。通过详细分析症状、专业诊断技巧和优化策略,帮助用户有效应对GPT-4o等高级功能失效、响应质量下降等问题,特别包含国内用户关心的支付方案和账号管理建议。

weixin_42639633的博客 472

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

java实现求解表达式树的值_Java描述数据结构之二叉树运算(Binary Expression Tree)...

一般的算术式可以转换成二叉运算树(Binary Expression Tree)的方式,建立的方法可以根据以下原则:①考虑算术式中运算符的结合性与优先权,再适当地加上括号;②再由最内层的括号逐步向外,利用运算符当树根,左边操作数当左子树,右边操作数当右子树,其中优先权最低的运算符作为此二叉运算树的树根。下面的示例程序是将数组表示法表示的二叉运算树转换成链表表示的二叉运算树并计算此二叉运算树的值:/...

weixin_39714164的博客 488

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析

本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。

yolo5detector的博客 217

二叉树的基本操作(Java实现)

在Java中可以通过下面这种方式定义一个二叉树的类: public class TreeNode { int data; TreeNode left; TreeNode right; public TreeNode(int data) { this.data = data; } 下面介绍一些操作二叉树的基本方法: 文章目录1.构建二叉树2.深度优先遍历3.层序遍历4.如何判断两个二叉树相同5.如何判断一个二叉树是否对称 1.构建二叉树 /** * 构建二叉树 .

Javaer 1481

基于鸿蒙 UniProton 的汽车电子系统开发指南

基于鸿蒙UniProton实时操作系统,提供了汽车电子系统开发的完整指南。通过统一的设计模式和开发规范,实现了高效、可靠的汽车电子系统开发。

m0_67505153的博客 178

CUDA&PCL 点云体素下采样

CUDA&PCL 点云体素下采样

dayuhaitang1的博客 1268

二叉树算法 java_二叉树算法的java实现

package Alg;public class BSTree {private BSTreeNode root = null;//树根节点private int count = 0;//树的节点数public int getCount() {return count;}public enum MatchType {E, GE, LE};/*** 根据值进行搜索* @param val 匹配值* ...

weixin_29743373的博客 247

Python图像处理之光斑分析

光斑是工程中经常出现的图像数据,其特点是目标明确,分布清晰。对光斑图像的分析,主要包括质心定位、目标截取以及半径拟合等。

微小冷的学习笔记 2857

java 二叉树实验报告_二叉树的各种基本运算的实现实验报告.doc

二叉树的各种基本运算的实现实验报告.doc软件技术基础实验四--二叉树的各种基本运算的实现班级:电信0901学号:0703090106姓名:蒋玮珂实验四 二叉树的各种基本运算的实现(1)实验题目:编写一个程序,实现二叉树的各种基本运算,并在此基础上设计一个主程序完成如下功能:(1)创建二叉树btree(2)求出二叉树btree的树高(3)中序遍历二叉树btree(4)统计二叉树btree的叶结点数...

weixin_42514394的博客 844

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java二叉树代码_java 实现二叉树结构基本运算详细代码

static final int MAXLEN = 20; //最大长度class CBTType //定义二叉树节点类型{String data;//元素数据CBTType left; //左子树节点引用CBTType right; //右子树节点引用}CBTType InitTree()//初始化二叉树{CBTType node;if((node=new CBTTyp...

weixin_39682477的博客 114

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java二叉树 计算层_java 实现二叉树结构基本运算详细代码

static final int MAXLEN = 20; //最大长度class CBTType //定义二叉树节点类型{String data;//元素数据CBTType left; //左子树节点引用CBTType right; //右子树节点引用}CBTType InitTree()//初始化二叉树{CBTType node;if((node=new CBTTyp...

weixin_39955149的博客 172

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java嵌套括号 二叉树_如何处理加括号的四则混合运算表达式——基于二叉树的实现(Eclipse平台 Java版)...

记得上《数据结构》课程时,利用栈的特性解决过四则混合运算表达式。而如今在编写小型关系数据库的时候,编译部分要处理where后面的逻辑表达式——检查语法正确与否的同时,还要将信息传给下一个接口,进行优化处理,所以存成一棵树的形式是最合理和最方便后续操作的。想到和四则混合运算表达式的处理本质上就是一样的,只是细节方面要考虑更多,要多很多。~而编写处理加括号的四则混合运算表达式生成一棵二叉树的程序,完全...

weixin_29499957的博客 620

二叉树实现复杂运算

                                                    二叉树         树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源...

u012763405的博客 255

二叉树之路径和//递归操作

递归操作,非常晦涩难懂。 递归说白了就两步,逆向去思考,设计一个跳出递归的条件,在函数内部调用自身的函数(函数的变量一定要是变化的,不然会陷入无限递归导致栈溢出),层层递进,将问题规模不断地缩小。 递归简单操作之阶乘 public int jiecheng(int n){ if(n==1){ //设计跳出条件 return 1; } else { return n*jiechen.

WC949464367的博客 281

简析java中的数据结构

文章目录简析java中的数据结构1、概论1.1 基本概念1.2 数据结构涵盖了什么?2、常见的java实现的数据结构2.1 栈2.2 队列2.3 链表2.4 散列表2.5 排序二叉树2.6 红黑树2.7 B-Tree(顺带了解的)2.8 位图结语 简析java中的数据结构 1、概论 1.1 基本概念 首先来说说几个术语: 什么是数据(data)? 所有能被计算机识别、存储和处理的符号的集合包括数字、字符、声音、图像等信息 什么是数据元素(data element)? 数据的基本单位,具有完整确定的实

FBB360JAVA的博客 1044

java 实现二叉树的基本操作

我建立的二叉树如下图所示:以下是使用Java语言实现二叉树的基本操作package com.ddh.binarytree; import java.util.*; @SuppressWarnings("all") public class BinaryTree { private TreeNode root=null; public BinaryTree(){ ...

ddhsea的博客 3548

LeetCode题练习与总结:二叉树的层平均值--637

本文详细介绍了如何使用广度优先搜索算法计算二叉树每层节点的平均值,并提供了Java实现代码,分析了时间复杂度和空间复杂度,总结了涉及的关键知识点。

一直学习永不止步 1035

算法实训相关

利用异或和与运算进行算术加法: package testmain; import java.util.Scanner; public class t1 { public static void main(String[] args) { Scanner k = new Scanner(System.in); int m = k.nextInt(); int n = k.nextInt(); while (n != 0) { int tmp = (m & n) <&l

ZziQon的博客 176

Java初阶数据结构二叉树实现+练习完整(工程文件后序会进行上传)

(1)链表存储是用一个节点一个节点来引用起来的,常见的有二叉和三叉表示方式(2)双孩子双亲表示法就是红黑树那些,我们会在高级数据结构中进行讲解我们的初级数据结构中使用的就是孩子表示法5.2 二叉树链表式存储实现(孩子表示法)代码实现定义三个类测试类节点类二叉树类(1)这三个类会整体实现这个二叉树(2)定义一个一般的二叉树的节点类型(3)接下来我会用穷举的方法来实现二叉树,因为不这样搞你们看不懂图解我会定义这些节点然后用手动的方式拼接起来。

cjmyydsds的博客 1620

Java基础复习笔记 第14章:数据结构与集合源码

【代码】Java基础复习笔记 第14章:数据结构与集合源码。

2302_80888278的博客 420

【数据结构】之二叉树的java实现

二叉树的定义: 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。     二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。     这个定义

u012173884的博客 371
上一篇: Java实现二叉树建立以及三种遍历
下一篇: Java的Callable和Future使用
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值