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版的二叉排序树/二叉搜索树. 二叉排序树介绍 在上篇博客中,顺序表的插入和删除效率还可以,但查找效率很低:而有序线性表中,可以使用折半.插值.斐 ...
随机推荐
- LeetCode 028 Implement strStr()
题目要求:Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in h ...
- JS代码下载百度文库纯文本文档
下载百度文库纯文本文档流程 1.按 F12 或 Ctrl+Shift+I打开后台(或点击右键,在点击检查)[建议使用谷歌浏览器] 2.切换到控制台,赋值粘贴以下js代码,回车后,浏览器将自动下载保存 ...
- 第二十七章、containers容器类部件QTabWidget选项窗部件详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...
- POJ2466 棋盘覆盖
一张\(n*m\)的棋盘,有\(k\)个点不能被覆盖,问其余点能不能被\(1*2\)的小矩形完全覆盖,多测 这题先输入\(m\)是什么鬼啊!!! 其实是一个比较裸的二分图判定,把\(k\)个点挖去然后 ...
- vue-cli脚手架搭建vue3.0+typescripe项目
新开个项目,小项目,小.顺手就用vue吧,vue3出来也几个月了,直接上了吧.一年多没用vue了,用的时候也得再熟悉,不如直接干3了! vue官方推荐使用的脚手架是 Vite 和 vue-cli ,延 ...
- python命名切片
命名切片 c = slice(2, 5) a = [1, 2, 3, 4, 5, 6, 7] print(a[c])
- 迭代 可迭代对象 迭代器的bj
1.迭代的概念 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值. 2.可迭代对象 ...
- 虚拟局域网Vlan配置实战
VLAN 的基本概念 Access 类型的接口 Trunk 类型的接口 接口类型小结 以太网交换机的二层接口类型 Access口接收帧 Access口发送帧 Trunk口接收帧 Trunk口发送帧 H ...
- mysql: SOURCE error 2?
mysql: SOURCE error 2? mysql -uroot -p ****** # 路径输入错误,会抛出这个异常 mysql> source /var/lib/ambari-serv ...
- 微服务之服务治理_Eureka
首先需要明确,不管是什么事物需要"治理",那一定是该事物存在一定问题.比如环境治理.那么服务,或者说微服务为什么需要治理?对于服务来说,如果它承担的业务职责简单,那其实治理的必要性 ...