首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
express
tags
instance
default
replace
plugins
settings
merge
httprequest
buffer
callback
lua
expression
range
tree
usb
include
filter
split
python3
substring
byte
jsp
regex
hash
php5
int
less
scala
timestamp
ascii
httpclient
loops
cSharp
version
php
frameworks
hashtable
rsa
golang
stream
install
web3
require
const
flutter
case
actionscrip
spring
eval
iostream
c语言
cPlusPlus
select
copy
grid
bytecode
export
go
post
perl
uml
数组
dll
audio
io
js
node.js
shell
subset
controller
fetch
uri
runtime
window
hashset
sum
utf-8
cookie
当前位置:
开发笔记
>
编程语言
> 正文
2018-2019学年第六周《Java数据结构与算法》学习总结
作者:Eva绫波_772 | 来源:互联网 | 2024-12-22 16:43
本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。
### 第六周学习总结:非线性数据结构——树
#### 概述
本周我们深入探讨了第十章的内容,即非线性集合与数据结构——树。树作为一种重要的数据结构,在计算机科学中有着广泛的应用。本章节主要讨论了树的定义、实现方式及实际应用场景。
#### 树的基本概念
树是一种非线性的层次结构,由结点(Node)和边(Edge)组成。以下是树的一些关键术语:
- **根(Root)**:树的顶层唯一结点。
- **孩子(Children)**:位于较低层的结点是上一层结点的孩子。
- **兄弟(Siblings)**:同一双亲的孩子互为兄弟。
- **叶子(Leaf)**:没有孩子的结点。
- **内部结点(Internal Node)**:至少有一个孩子的非根节点。
- **祖先(Ancestor)**:从某一特定结点到根结点路径上的所有结点。
- **子孙(Descendant)**:从根结点到某一特定结点路径上的所有结点。
- **路径长度(Path Length)**:从根结点到该结点的边数。
- **高度(Height)**:从根到最远叶子结点的路径长度。
#### 树的分类
树可以根据其度(Order)进行分类,也可以根据是否平衡进行分类:
- **广义树**:无限制的孩子数目。
- **n元树**:每个结点最多有n个孩子。
- **二叉树**:每个结点最多有两个孩子。
- **平衡树**:所有叶子结点位于同一层或相差不超过一层。
- **完全树**:平衡且底层叶子位于左边。
- **满树**:所有叶子在同一层,每个内部结点有n个孩子。
#### 树的实现方法
树可以通过链式结构或数组实现:
- **链式结构**:使用指针连接各个结点,适合动态变化的树结构。
- **数组实现**:将树元素按特定规则存储在数组中,适用于静态或相对稳定的树结构。
#### 遍历树的方法
遍历树有四种基本方法:
- **前序遍历(Preorder Traversal)**:先访问根结点,再访问左子树,最后访问右子树。
- **中序遍历(Inorder Traversal)**:先访问左子树,再访问根结点,最后访问右子树。
- **后序遍历(Postorder Traversal)**:先访问左子树,再访问右子树,最后访问根结点。
- **层序遍历(Level-order Traversal)**:按层次从上到下逐层访问。
#### 二叉树的应用
表达式树是一种典型的二叉树应用,用于计算后缀表达式。链式结构实现优于数组结构实现,因为链式结构在组合新树时复杂度更低。
#### 学习中的问题及解决
- **问题1**:理解树的数组实现中的模拟链接策略。通过老师的讲解,我明白了这种策略是通过连续分配数组位置来存储树元素,而不是基于树的结构定位。
- **问题2**:理解`ExpressionTreeOp`类中的`termType`变量的作用。这个变量用于区分操作符和操作数,在程序中起到中间值的作用。
#### 代码实现中的挑战
- **问题1**:实现`toString`方法以输出树结构。尝试使用迭代器但未成功,最终未能找到合适的解决方案。
- **问题2**:正确计算树的高度。最初使用了错误的循环逻辑,经过讨论后改为递归查找最远路径。
- **问题3**:运行`BackPainAnalyzer`类时文件找不到。通过添加路径解决了这个问题。
#### 测试活动错题改正
- **问题1**:Java Collections API中索引列表的实现数量。答案选C,但原因尚不明确。
- **问题2**:接口引用可以指向任何实现了该接口的对象。答案选A,正确。
#### 总结
非线性结构的学习标志着我们对更复杂数据结构的理解进一步加深。尽管树结构中仍然存在链表和数组的身影,但我们需要继续努力才能真正融会贯通。
#### 参考资料
- [Java软件结构与数据结构](第四版)
- JavaAPI文档中List的解释
- Java非线性数据结构 树的深刻研究
- Java数据结构-树及树的存储结构
java
编程
io
sum
text
tree
int
数组
rsa
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
int
Unity 客户端框架设计:UI管理系统的构建
本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ...
[详细]
蜡笔小新 2024-12-27 10:28:40
int
深入解析ExpandableComposite.addExpansionListener()方法及其应用
本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ...
[详细]
蜡笔小新 2024-12-27 16:11:49
int
2023年京东Android面试真题解析与经验分享
本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ...
[详细]
蜡笔小新 2024-12-26 17:45:48
int
深入理解org.neo4j.helpers.collection.Iterators.single()方法及其应用
本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ...
[详细]
蜡笔小新 2024-12-28 10:51:55
int
Handling Null Object Encoding in OAuth 1.0a API Implementation
Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ...
[详细]
蜡笔小新 2024-12-28 08:54:34
int
新浪笔试题
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
scala
Akka BackoffSupervisor的深入解析与实践
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
int
CUGB图论专题:排水系统中的最大流问题 - EK与Dinic算法解析
本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ...
[详细]
蜡笔小新 2024-12-25 17:47:23
int
编写有趣的VBScript恶作剧脚本
本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ...
[详细]
蜡笔小新 2024-12-28 09:46:23
int
解析Java中Text.splitText()方法及其应用场景
本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ...
[详细]
蜡笔小新 2024-12-26 18:31:42
int
Weight the Tree(树形dp)
题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!----- ...
[详细]
蜡笔小新 2024-12-26 15:55:56
int
洛谷 P4116 树上操作:颜色变换与路径查询
本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ...
[详细]
蜡笔小新 2024-12-26 10:22:20
int
Codeforces Round #566 (Div. 2) A~F个人题解
Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ...
[详细]
蜡笔小新 2024-12-25 18:41:21
int
DLP数据泄露检测原理浅析
最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ...
[详细]
蜡笔小新 2024-12-25 18:19:32
int
毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ...
[详细]
蜡笔小新 2024-12-25 17:38:50
Eva绫波_772
这个家伙很懒,什么也没留下!
Tags | 热门标签
express
tags
instance
default
replace
plugins
settings
merge
httprequest
buffer
callback
lua
expression
range
tree
usb
include
filter
split
python3
substring
byte
jsp
regex
hash
php5
int
less
scala
timestamp
RankList | 热门文章
1
掌握 Git 与 SVN 的高效使用技巧,轻松应对版本控制挑战
2
在Android 4.4中从相册选择图片并获取其路径的方法详解
3
Argus: 免费的Outlook插件,有效检测恶意邮件
4
优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
5
Java 类名能否包含特定字符?探讨含有委托功能的类的命名规范与专有名称
6
深入解析 BGP 路由协议的核心机制与应用(上篇)
7
Avoiding Blue Screen of Death When Handling Rule Exceptions
8
SQL注入防御:深入解析绕过addslashes技术的方法与策略
9
利用 PHP APICommonUrl 中转实现 jQuery JSONP 请求优化
10
Jeecg开源社区启动第12届架构技术培训班,现正式开放报名通道
11
Docker入门指南:初探容器化技术
12
使用for循环构建标准等腰三角形
13
探讨 MVVM 架构模式的核心理念与应用价值
14
PotPlayer:一款卓越的多媒体视频播放器
15
Docker镜像加载优化:开发者的高效实践指南
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有