说到树结构就不得不回顾 链表结构 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 树 数据结构的更多相关文章

  1. java实现的Trie树数据结构

    近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题.比方" 有一个1G大小的一个文件.里面每一行是一个词.词的大小不超过16字节,内存大小限制是1M. 返回频数最高的100个词. ...

  2. 20172302 《Java软件结构与数据结构》实验二:树实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...

  3. 20172328 2018-2019《Java软件结构与数据结构》第一周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第一周学习总结 概述 Generalization 本周学习了软件质量.数据结构以及算法分析的具体内容,主要依托于所用教材 ...

  4. 20172328 2018-2019《Java软件结构与数据结构》第六周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第六周学习总结 概述 Generalization 本周学习了第十章:非线性集合与数据结构--树.主要讨论了树的使用和实现 ...

  5. 20172328 2018-2019《Java软件结构与数据结构》第七周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第七周学习总结 概述 Generalization 本周学习了第11章:二叉查找树.在本章中,主要探讨了二叉查找树的概念和 ...

  6. 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(◍°∇°◍) ...

  7. 20172328 2018-2019《Java软件结构与数据结构》第九周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第九周学习总结 概述 Generalization 本周学习了无向图.有向图.带权图.常用的图算法.图的实现策略. 教材学 ...

  8. 20172306 2018-2019-2 《Java程序设计与数据结构》第八周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第八周学习总结 教材学习内容总结 堆 堆是具有两个附加属性的一棵二叉树 它是一个完全树 对每一结点,它小于或等于其左 ...

  9. 【Java】 大话数据结构(11) 查找算法(2)(二叉排序树/二叉搜索树)

    本文根据<大话数据结构>一书,实现了Java版的二叉排序树/二叉搜索树. 二叉排序树介绍 在上篇博客中,顺序表的插入和删除效率还可以,但查找效率很低:而有序线性表中,可以使用折半.插值.斐 ...

随机推荐

  1. ubuntu 安装scapy

    官网下载最新安装包:https://scapy.net/ 下载之后进入相应文件夹解压: 然后进入相关文件夹启动setup.py: 成功:

  2. spring-boot-starter

    Spring Boot Starter 是在 SpringBoot 组件中被提出来的一种概念,stackoverflow 上面已经有人概括了这个 starter 是什么东西,想看完整的回答戳 这里. ...

  3. Redis/Mysql/SQLite/MongoDB 数据库对比

    一.Redis: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(so ...

  4. 数据库:Flask-SQLAlchemy

    一.安装以及使用 1.安装 安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是 mysql 数据库,需要安装 mysqldb pip ins ...

  5. springsecurity+springsocial资料收集

    https://blog.csdn.net/tryandfight/article/details/80524573 https://niocoder.com/2018/01/09/Spring-Se ...

  6. 【Docker】 .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 、配置swagger (三)

    系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...

  7. [ASIS 2019]Unicorn shop

    点击进去之后是一个购买独角兽的界面,有四种类型的独角兽,前三种的价格比较便宜,最后的独角兽价格比较贵. 我们先尝试购买前三种独角兽,输入id,然后price输入9 然后就告诉我商品错了,可能复现靶场这 ...

  8. 【题解】G.Graph(2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest)

    题目链接G题 题意 序列 \(a_1,a_2,⋯,a_n\) 是一个排列, 当且仅当它含有 1 到 n 的所有整数. 排列 \(a_1,a_2,⋯,a_n\) 是一个有向图的拓扑排序,当且仅当对于每条 ...

  9. 【Codeforces 715C】Digit Tree(点分治)

    Description 程序员 ZS 有一棵树,它可以表示为 \(n\) 个顶点的无向连通图,顶点编号从 \(0\) 到 \(n-1\),它们之间有 \(n-1\) 条边.每条边上都有一个非零的数字. ...

  10. 深度剖析目标检测算法YOLOV4

    深度剖析目标检测算法YOLOV4 目录 简述 yolo 的发展历程 介绍 yolov3 算法原理 介绍 yolov4 算法原理(相比于 yolov3,有哪些改进点) YOLOV4 源代码日志解读 yo ...