Java Tree 树 数据结构
说到树结构就不得不回顾 链表结构 https://www.cnblogs.com/easyidea/p/13371863.html

如果链表结构中再多一个指针会是什么情况?

是不是像树根一样,这就是 树 数据结构。
class TreeNode<E>{ //类名 :Java类就是一种自定义的数据结构
E val; //数据 :节点数据
TreeNode left; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
TreeNode right; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
TreeNode(E val){ //构造方法 :构造方法和类名相同
this.val=val; //把接收的参数赋值给当前类的val变量
}
}
public class Test{
public static void main(String[] args){
TreeNode<Integer> root = new TreeNode<Integer>(3); //创建根节点
growth(root,2); //创建深度为3的树结构
print(root); //打印树结构
}
//通过递归的方式创建树的子节点
static void growth(TreeNode root,int deep){
if(deep==0) return;
TreeNode<Integer> left = new TreeNode<Integer>(deep); //创建左子节点
TreeNode<Integer> right = new TreeNode<Integer>(deep); //创建右子节点
root.left=left;
root.right=right;
growth(left,deep-1); //递归调用
growth(right,deep-1); //递归调用
}
//通过递归的方式打印树结构
static void print(TreeNode root){
if(root==null){
return;
}
System.out.print(root.val);
print(root.left); //递归调用
print(root.right); //递归调用
}
}
如上面的示例构建的是一颗标准的二叉树结构:
当然树的结构还可以是N叉树:数中每个节点的子节点个数相同,子节点个数是多少就叫做 多少叉树。
如下面3叉树:

三叉树节点:
class TreeNode<E>{ //类名 :Java类就是一种自定义的数据结构
E val; //数据 :节点数据
TreeNode left; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
TreeNode center; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
TreeNode right; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
TreeNode(E val){ //构造方法 :构造方法和类名相同
this.val=val; //把接收的参数赋值给当前类的val变量
}
}
当然树的结构还可以是不规则的,如下图所示:

这样的结构怎么表示呢?
下面给出了一种表示方法:
class TreeNode<E>{ //类名 :Java类就是一种自定义的数据结构
E val; //数据 :节点数据
//对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
//用来存放一堆子节点
List<TreeNode> childs
TreeNode(E val){ //构造方法 :构造方法和类名相同
this.val=val; //把接收的参数赋值给当前类的val变量
}
}
Java Tree 树 数据结构的更多相关文章
- java实现的Trie树数据结构
近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题.比方" 有一个1G大小的一个文件.里面每一行是一个词.词的大小不超过16字节,内存大小限制是1M. 返回频数最高的100个词. ...
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...
- 20172328 2018-2019《Java软件结构与数据结构》第一周学习总结
20172328 2018-2019<Java软件结构与数据结构>第一周学习总结 概述 Generalization 本周学习了软件质量.数据结构以及算法分析的具体内容,主要依托于所用教材 ...
- 20172328 2018-2019《Java软件结构与数据结构》第六周学习总结
20172328 2018-2019<Java软件结构与数据结构>第六周学习总结 概述 Generalization 本周学习了第十章:非线性集合与数据结构--树.主要讨论了树的使用和实现 ...
- 20172328 2018-2019《Java软件结构与数据结构》第七周学习总结
20172328 2018-2019<Java软件结构与数据结构>第七周学习总结 概述 Generalization 本周学习了第11章:二叉查找树.在本章中,主要探讨了二叉查找树的概念和 ...
- 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结
20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(◍°∇°◍) ...
- 20172328 2018-2019《Java软件结构与数据结构》第九周学习总结
20172328 2018-2019<Java软件结构与数据结构>第九周学习总结 概述 Generalization 本周学习了无向图.有向图.带权图.常用的图算法.图的实现策略. 教材学 ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第八周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第八周学习总结 教材学习内容总结 堆 堆是具有两个附加属性的一棵二叉树 它是一个完全树 对每一结点,它小于或等于其左 ...
- 【Java】 大话数据结构(11) 查找算法(2)(二叉排序树/二叉搜索树)
本文根据<大话数据结构>一书,实现了Java版的二叉排序树/二叉搜索树. 二叉排序树介绍 在上篇博客中,顺序表的插入和删除效率还可以,但查找效率很低:而有序线性表中,可以使用折半.插值.斐 ...
随机推荐
- python核心高级学习总结6------面向对象进阶之元类
元类引入 在多数语言中,类就是一组用来描述如何生成对象的代码段,在python中同样如此,但是在python中把类也称为类对象,是的,你没听错,在这里你只要使用class关键字定义了类,其解释器在执行 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的toolButtonStyle属性
tooButtonStyle属性保存主窗口工具栏按钮的样式设置,用来表示工具栏按钮的文字和图标怎么显示. 该属性的可设置值类型为枚举类型Qt.ToolButtonStyle,它包含如下值: 该属性的缺 ...
- mysql中table schema的基本操作
我们通常对数据库进行的增删插检操作,是针对数据库中的文件.mysql数据库中还有一些表(是view,只能做select操作)记录了现有表的meta data,比如某个column的名字,它的定义是什么 ...
- Office宏病毒免杀(1)
使用github开源工具EvilClippy进行宏病毒混淆免杀:https://github.com/outflanknl/EvilClippy/releases 注意需要将这两个文件下载在同一个文件 ...
- 分布式计算框架-MapReduce 基本原理(MP用于分布式计算)
hadoop最主要的2个基本的内容要了解.上次了解了一下HDFS,本章节主要是了解了MapReduce的一些基本原理. MapReduce文件系统:它是一种编程模型,用于大规模数据集(大于1TB)的并 ...
- vulnstack靶机实战01
前言 vulnstack是红日安全的一个实战环境,地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/最近在学习内网渗透方面的相关知识,通过对靶机的 ...
- CSS基础-边框
border border-top设置上边界 border-bottom / border-left / border-right 同理 可以为每一条边设置 : border-top-width宽度 ...
- 【科技】单 $\log$ 合并两棵有交集 FHQ-Treap 的方法
维护可分裂 & 合并的可重集 考虑这样一个问题: 维护 \(n\) 个 可重集 \(S_1, S_2, \cdots, S_n\),元素值域为 \([1, U]\),初始集合为空.支持一下操作 ...
- SpringBoot+Redis相关配置文件
springboot整合redis配置类 package com.yalong.config; import com.fasterxml.jackson.annotation.JsonAutoDete ...
- 面试 15-虚拟DOM
15-虚拟DOM #前言 vdom 是 vue 和 React 的核心,先讲哪个都绕不开它. vdom 比较独立,使用也比较简单. 如果面试问到 vue 和 React 和实现,免不了问 vdom: ...