java学习笔记之创建二叉树

java实现二叉树创建和遍历 今天晚上我学习了java语言的二叉树创建和遍历算法。 实现的机制和上一节课差不多。 代码如下: package 二叉树链表; public class Node { private int value; private Node leftChild; private Node rightChild; public Node(int value) { super(); 阅读详情

算法和数据结构底子薄弱,最近开始结合经典的算法题重新学习。

本文的代码请见原创【http://blog.youkuaiyun.com/wuwenxiang91322/article/details/12231657】

我是结合他的代码一行行通过注释解读自己的理解,从中温习java的语法结构及数据结构、算法的思想。如有错误,望批评指正~

注解较多,我用绿色字体区分开


ps:这次创建二叉树后,增加个求二叉树节点数来测试打印结果


package tree;


import java.util.Stack;


/**
 * 二叉树的链式存储
 * @author WWX
 */

public class BinaryTree{
//二叉树通常用树结点结构存储,有时也包含指向唯一父节点的指针
private TreeNode root = null;

//BinTree()该方法与类名字相同,所以是构造方法,被默认强制为void
public  BinaryTree(){
root = new TreeNode(1,"A");
}

//创建二叉树,树由结点构成
public void createBinTree(TreeNode root){
TreeNode newNodeB = new TreeNode(2,"B");
TreeNode newNodeC = new TreeNode(3,"C");
TreeNode newNodeD = new TreeNode(4,"D");
TreeNode newNodeE = new TreeNode(5,"E");
TreeNode newNodeF = new TreeNode(6,"F");
root.leftChild = newNodeB;
root.rightChild = newNodeC;
root.leftChild.leftChild = newNodeD;
root.leftChild.rightChild = newNodeE;
root.rightChild.rightChild = newNodeF;

}

//节点个数
public int size(){
return size(root);
}
private int size(TreeNode subtree){
if (subtree == null)
return 0;
else
{
return 1+size(subtree.leftChild)+size(subtree.rightChild);
}
}

/**
 * 二叉树的节点数据结构
 * @author WWX
 */

private class TreeNode{
private int key = 0; //key 为层序编码
private String data = null; //data 为数据域
private boolean isVisited = false;

/*树的每一个节点的数据结构都是TreeNode类型,
createBinTree里定义的root为TreeNode类型,所以左右孩子也为TreeNode类型,
加上二叉树的递归思想,所以所有节点都是TreeNode类型
        */ 

private TreeNode leftChild = null;
private TreeNode rightChild = null;



/*TreeNode(int key,String data) 方法名与类名相同,所以为构造方法
 * 
  为什么要用到this?
  因为在TreeNode()函数中需要该函数所属类的当前对象

//这里符合必须使用this的情况:
 * 构造方法将外部传入的参数赋值给类的成员变量
 * 构造方法的形式参数名称与类的成员变量名一致
 */

//构造方法的形式参数名称与类的成员变量名一致
public TreeNode(int key,String data){

this.key = key;//构造方法将外部传入的参数赋值给类的成员变量
this.data = null;
this.isVisited = false;
this.leftChild = null;
this.rightChild = null;

}
}


//测试
public static void main(String[] args) {
        BinaryTree bt = new BinaryTree();
        bt.createBinTree(bt.root);
        System.out.println("the size of the tree is " + bt.size());
 
    }
}




打印结果:

the size of the tree is 6
 

Java 创建完全二叉树 题外话:今天笔试过程中有个步骤要创建完全二叉树,弄了半天,时间太长,在这记录下! import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * @author fangzheng * @date 2016年9月20日 下午1:51:05 * @version 1.0 */ 阅读详情

相关推荐

一文读懂无人机AI识别算法,原理、技术、应用

本文详细介绍了无人机识别算法的工作原理、技术优势以及在多个行业的应用前景,展现了其在提升安全监控、资源管理和应急响应中的关键作用。尽管无人机识别算法在多个领域展现出巨大潜力,但仍面临技术挑战,如算法的准确性、数据的实时处理能力以及对复杂环境的适应性。4. 消防与城市管理: 无人机识别算法在消防和城市管理中的应用,为相关部门提供了及时的信息支持,提升了应急处置能力和城市管理水平。1. 公安监控: 无人机识别算法在公安领域的应用,可以实时识别犯罪嫌疑人和违法行为,有效提升城市治安管理的智能化水平。

foiadrone的博客 1849

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

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

qq_53869058的博客 4665

大数据国赛第2套任务C-子任务一特征工程

根据**Hudi**的dwd_ds_hudi库中相关表或MySQL中shtd_store中相关表(order_detail、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;

weixin_44117248的博客 904

用java 实现二叉树创建

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

花生日记 2973

易灵思FPGA-软件Efinity和Modelsim联仿设置

文章目录前言一、modelsim破解过程二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智

qq_35221855的博客 5365

PMSM单电阻采样避坑指南:如何解决非观测区电流重构难题(附ST专利分析)

本文深入解析了PMSM单电阻采样技术中的非观测区电流重构难题,并详细介绍了ST专利方案及移相法的工程实践。通过优化PWM调制策略和系统级调试方法,有效解决了相电流检测精度问题,为电机控制领域的工程师提供了实用的技术指南。

weixin_33737774的博客 632

【Java】二叉树

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

qq_61635026的博客 3613

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2650

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

数字滤波器应用介绍

线性滤波器FIR ,会引起恒定延迟,通过补零的方式补偿非线性滤波器IIR,会引起频率相关的延迟,通过零相位延迟filtfilt补偿从信号中去除不需要的频谱时,通过滤波和补偿实现。如果需要去除的频率与采样率相差甚远,比如4kHz 与100Hz, 可通过 低通滤波->补偿->降采样–> 滤波 补偿 -->上采样还原的方法。*降采样前一定要先低通滤波为了防止混叠。

weixin_39107270的博客 274

MTK平台WiFi学习--Wi-Fi 连线/断线问题初步分析

摘要:本文详细介绍了MTK平台WiFi连接问题的日志分析方法。文章首先阐述了WiFi连接的标准流程,包括指令接收、BSSID选择、信道分配、认证关联、四次握手和DHCP获取等关键步骤。针对常见故障场景,如选网失败、信道申请失败、认证关联失败、四次握手失败等,提供了具体的日志分析方法和排查思路,包括识别关键日志、分析状态码、结合固件日志和抓包数据等。文章还特别强调了不同故障场景下需要收集的日志类型和分析要点,为WiFi连接问题的定位提供了一套系统化的解决方案。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1593

二叉树(Java实现)

声明:本文部分文章取自于 Java中关于二叉树详解_来学习的小张的博客-优快云博客_java 二叉树原理 更多关于二叉树详情可以点击上面链接 一:树形结构 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 有一个特殊的节点,称为根节点,根节点没有前驱节点; 除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个

JiaXingNashishua的博客 1万+

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版)

在OpenClaw的多种管理方式中,Web控制台提供了最直观、最友好的用户体验。通过图形化界面,用户可以轻松完成复杂的配置任务,实时监控系统状态,以及进行各种管理操作。对于不熟悉命令行的用户来说,Web控制台是最佳选择。

一键难忘的博客 1930

Java从前序与中序遍历构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] 示例 2: 输入: preorder = [-1], inorder = [-1] 输出: [-1] 提示: 1 <= preorder.length &lt

weixin_46429649的博客 1037

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java先序递归创建二叉树

注: 需要掌握java中引用类型(即对象)的作为方法的参数是按值传递还是按引用传递整个代码是在同一个文件中 二叉数节点定义:class Node { public int element; public Node left; public Node right; }二叉树定义:class BiTree { Node root; public BiTree(

面对未来,乘风破浪 6565

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

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

二叉树的创建Java实现

关键词:二叉树结点类、二叉树类 1.二叉树结点类的设计 class BiTreeNode { int data;//设数据域非负 BiTreeNode leftChild; BiTreeNode rightChild; public BiTreeNode(){ data = -1;//负数表示空 leftChild = rightChild = null; } pub...

天天向上 7340

用java创建一棵二叉树_java创建二叉树

/*** 创建非完全二叉树、完全二叉树、满二叉树** 由于二叉树的节点增加没有什么规则,所以这里只是简单的使用了递一* 次性把整棵树创建出来,而没有设计出一个一个添加节点的方法与删除* @author jzj* @date 2009-12-23*/public class BinTree {// Bin=Binary(二进位的, 二元的)protected Entry root;//根privat...

weixin_33681561的博客 2252

【数据结构】-java实现-先序创建普通二叉树(即递归创建一棵普通二叉树)

怎么按照要求创建一棵二叉树 怎么创建下图的二叉树? 我写过完全二叉树的创建【数据结构】-java 完全二叉树的创建以及递归遍历算法实现 参考完全二叉树的结点的创建。 对于这种普通的二叉树我们也可以用递归的方式去创建。 先上代码,朋友们应该就明白个大概了,文本末附总结 树节点的创建 //全部是私有属性,这里用set、get方法返回所需要的属性。 public class BTNode { /...

小呼哥的博客 4436

java递归创建二叉树及遍历二叉树

java递归创建二叉树 1.二叉树结点的结构 用C语言的指针概念来看,二叉树的结点中应包括三个域,分别为两个指针域和一个数据域,指针域分别为left域和right域,表示指向二叉树的左右子孩子,数据域(data域)存放该结点本身的数据。 class Node{ Node left; //指向左孩子 Node right; //指向右孩子 int data; //数据域 Node...

swy66的博客 3095

java递归创建二叉树_创建二叉树-递归实现

一、引言:大三上学期学了数据结构后就没再接触过数据结构的内容了,至今已经整整两年半了,已经把链表,队列,堆栈,树,二叉树等内容忘得干干净净了,并且如果不是决定做《机器学习》的作业,自己丝毫没有意识到自己已经忘得干干净净,或者说是以前只是依样画葫芦的把二叉树的程序调出来了,但是根本就没有明白其中的原理!!二、做《机器学习》作业的时候,怎么也想不明白两个问题:第一个问题:"p->next"表示什...

weixin_34209060的博客 1962

java创建普通二叉树

这段时间一直在复习数据结构的知识。从最基础的开始,实现一个普通的二叉树。但发现也不那么简单。因为之前学数据结构时是用C语言写的。指针用来对结构体的值操作比较好理解。但java没有指针。而Node节点在方法中传递的是地址。如果直接对形参进行new操作是错误的。无法改变实参的值的。这一点坑了我很久,然后一顿查资料。 时隔很久,终于填上这个坑了.下面是以递归创建的二叉树.还有一些常见的遍历和树...

学习真香 2万+

二叉树的创建(数组转二叉树) java

将一个数组转换成一个二叉树的java实现,如下: import org.junit.Test; import java.util.ArrayList; import java.util.List; /** * 二叉树的生成 * * @author DangerShi */ public class BTreeBuilder { class TreeNode { ...

逆水行舟 4725

java二叉树创建

最近在刷剑指offer,里面提到二叉树,一直以来用java的多,所以编写了一个java二叉树结构和工具类。工具类包括创建,遍历等方法。定期更新。 关于输入,假如我的二叉树结构为,则输入的数据为1 2 0 0 3 0 0 。如果为,则输入数据为 1 2 3 0 0 0 4 0 5 0 0 ,其中空格应该为换行。采取的是先序输入。如果要改为中序,则可以用栈。以下是代...

anshu7859的博客 894

Java:二叉树的创建

普通的二叉树有两种创建方式,一种是基于数组存储的,一种是基于先序遍历的。1、基于数组的。 默认:若数组的元素出现’0’【字符串】,则代表不存在该节点。 假设数组内容为:1 2 3 4 0 5 6 7 8 0 0 9 10 则树的形状为: 1 / \ 2 3 / /

new_Aiden的博客 7476

java递归创建二叉树_java创建二叉树并递归遍历二叉树

二叉树类代码:package binarytree;import linkqueue.LinkQueue;public class BinaryTree {class Node{public Object data;public Node lchild;public Node rchild;public Node(Object data){this.data = data;this.lchild ...

weixin_39792472的博客 330

二叉树创建

创建二叉树的节点: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } public TreeNode(){} } 创建二叉树并遍历: public class Test { public static void main(String[] args)..

SPARROW的博客 1290
上一篇: 微信网页版如何给公众号发消息
下一篇: java学习笔记之图的遍历(广度优先搜索BFS)
samnancy
博客等级 码龄19年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值