Java数据结构与算法——树(基本概念,很重要)
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。
有网友私信我,期待我的下一篇数据结构。非常荣幸文章被认可,也非常感谢你们的监督。
前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。本文介绍数据结构里一些复杂的数据结构——树(Tree),相应的会补充一些算法。本篇主要介绍一些必知必会的,可能是考试中的,也可能是面试中的。
0、树体系索引(待更)
二叉树及操作
二叉树的查找算法
B树、B+树
Huffman(哈夫曼)树和Huffman编码
堆(Heap)和堆排序
红黑树
人生苦短,学会淡定。。。
1、树的定义及存储结构
1.1 树的定义
树是一种非线性的数据结构,它是由n(n>=1)个有限节点组成的一种具有层次关系的集合,之所以称之为树,是因为它长得像一颗倒过来的树。
举个例子,每个人都有家族树,家族树一般长这样:
家族树的样子看起来像一颗正常的树,而数据结构中的树则像是一颗倒过来的树:
可以看出,一棵树有多个节点,上图中带〇的字母就是一个节点。每个节点可能有0个或更多子节点,每个节点至多有一个父节点,没有父节点的那个称之为根节点。除根节点外,每个节点又可以分为多个不相交的子树。
1.2 树的相关概念术语
1)节点<node>
树中每个元素都叫节点
2)根节点或树根<root>
树顶端的节点称之为根节点,也叫树根
3)子树<subTree>
除根节点之外,其他节点可以分为多个树的集合,叫做子树,在上图中,K这个节点可以称之为一颗子树,而H、K、L三个节点组合起来也可以叫做一颗子树
4)节点的度
一个节点直接含有的子树的个数,称之为节点的度。比如上图中B节点的度为3,C节点的度是2,I、J、K、L节点的度是0
5)叶子节点、叶节点、终端节点
度为0的节点叫做叶子节点,也叫叶节点、终端节点,其实就是没有子节点的节点,或者说没有子树的节点
6)双亲节点、父节点
父节点就是一个节点上头的那个节点,如果一个节点包含若干子节点,那么这个节点就是这些子节点的父节点,也叫双亲节点
7)兄弟节点
拥有相同父节点的节点互称为兄弟节点
8)树的度
一棵树中最大节点的度称之为树的度,即树中哪个节点的子节点最多,那么这个节点的度也就是树的度
9)节点的层次
从根这一层开始,根算1层,根的子节点算2层,一直到最下面一层
10)树的高度、深度
树的深度是从根节点开始、自顶向下逐层累加(根节点的高度是1)助记:深度从上到下
树的高度是从叶节点开始、自底向上逐层累加(叶节点的高度是1)助记:高度由下向上
虽然树的高度和深度一样,但是具体到某个节点上,其高度和深度通常是不一样的。
11)堂兄弟节点
堂兄弟节点是同一层,父节点不同,或者说双亲节点在同一层的节点称之为堂兄弟节点
12)节点的祖先
从根节点到某一节点一路顺下来的除了该节点的所有节点都是该节点的祖先节点
13)节点的子孙
以某节点为根的子树中,任何一个节点都是其子孙,也就是说这个节点下面与这个节点有关的节点都是这个节点的子孙
14)森林
由m棵不相交的树组成的集合,叫做森林
1.3 都有哪些树
树的种类有很多,我们接触到的树有二叉树、平衡二叉树、二叉查找树、B树、B+树、哈夫曼树、B*树、红黑树和trie树等。
2、树的存储结构及实现
树,首先首先是由节点组成,而除根节点的每个节点一定只有一个父节点,所以可以利用每个节点只有一个父节点的特性,使用父节点来构造树。
public class TreeNode1{private int data;private int parent;public int getData(){return date;}public void setData(int data){this.data = data;}public int getParent(){return parent;}public void setParent(int parent){this.parent = parent;}
}
这个节点有两个属性,一个是data,也就是这个节点的值(这个是必须有的),另一个是parent,也就是节点的父节点。
下一篇更新二叉树,敬请期待
码字不易,如对您有帮助,欢迎点赞收藏打赏^_^
Java数据结构与算法——树(基本概念,很重要)相关推荐
- 一.Java数据结构与算法:如何开始
数据结构和算法是计算机科学的核心概念之一,它们在软件开发中起着至关重要的作用.学习Java数据结构和算法不仅有助于提高编程能力,还能让你在面试和职业发展中脱颖而出.本文将为你介绍数据结构和算法的重要性 ...
- java数据结构与算法之顺序表与链表深入分析
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...
- java数据结构与算法之双链表设计与实现
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: java数据结 ...
- Java 数据结构与算法
目录 Java 数据结构与算法 数据结构 数据结构的定义 数据的逻辑结构 数据的物理结构 数据存储结构 数据结构的分类 线性结构 非线性结构 常用的数据结构 数组(Array) 栈( Stack) 队 ...
- Java数据结构和算法 - 递归
三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,--中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...
- java数据结构与算法之(Queue)队列设计与实现
[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
- Java 数据结构和算法(十五):无权无向图
Java数据结构和算法(十五)--无权无向图 前面我们介绍了树这种数据结构,树是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合,把它叫做"树"是因为它看起 ...
最新文章
- spark- PySparkSQL之PySpark解析Json集合数据
- (0054)iOS开发之制作静态库详解
- Selenium模拟光标进入和tab键移动
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)
- 反思专注力:重视专注;转变认知;避开即时娱乐;控制专注;氛围想不专注都难
- C++ STL 三大组件(容器|算法|迭代器) 初步使用01
- docker 加速镜像 阿里云镜像
- [Unity] ACT 战斗系统学习 2:从 Buff 系统开始的思考
- 网页设计太麻烦?15款免费优质Bootstrap UI工具包助你效率倍增!
- android skype 无法用蓝牙耳机,Skype发布更新 增加蓝牙耳机稳定性
- 台式计算机加固态硬盘,台式机加硬盘|台式机加SSD固态硬盘提速教程
- 2.高速PCB设计规范(一)
- 北京药监局考试计算机操作,考科一电脑操作
- stm32 uv5打开uv4工程错误
- 一文揭开您对手机所有的疑惑
- 【活动报名】 拥抱公平《 Impact Tech, She Can 》
- Fluent保存的h5文件无法用Tecplot打开的问题
- 使用openpose做的运动检测[附代码]
- 轻松解决yum源不能正常下载的四种方式
- cadence SPB17.4 - 取消(删除)扇出