【Scala笔记——道】Scala Tree Fold深度优先遍历详解

本文介绍了Scala中Tree的定义,重点讲解了深度优先遍历(DFS)的实现原理,并通过具体示例展示了如何利用Fold思想进行树的遍历操作,包括计算节点总数、查找最大值、求树的最大深度以及进行MAP转换等应用。
摘要由CSDN通过智能技术生成

Tree 定义

简化定义Scala Tree结构,包含两个部分: Branch和Tree。为了简化数据结构,Branch只包含 Tree类型的 左节点 和 右节点, Leaf包含具体 Value

sealed trait Tree[+A]

case class Leaf[A](value: A) extends Tree[A]
case class Branch[A](left: Tree[A], right: Tree[A]) extends Tree[A]

深度优先遍历 DFS

树的遍历右两种方式:
- 深度优先
- 广度优先
这里用DFS 实现,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

具体搜索顺序可以参考附图
1. 搜索根节点 左子树
2. 搜索当前树的左子树
3. 搜索当前树的左子树
4. 返回父节点,搜索父节点 右子树
5. 搜索当前树的左子树
6. 返回父节点,搜索父节点 右子树
7. 返回父节点, 返回父节点,返回父节点,搜索右子树
8. ….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值