随心所欲地遍历树结构
1. 遍历的基本概念
1.1 树的定义
我们主要关注树的遍历,不过在有特定入口节点能替代根节点到达其他所有节点的情况下,图也可以进行遍历。这里我们着重讨论有序树,即对节点的子节点有顺序规定的树。有序树通常有两种定义方式:递归定义(类似项代数中的项)和图论定义(指定根节点,并对节点和边有额外约束),图论定义更有助于直观理解遍历过程。
我们假设树是“丰富”的,即节点可以带有构造函数和类型注释,叶子节点可以携带数据,边(也称为分支)可以有标签。对于树 t 中的任意节点 n ,可以进行以下观察:
- n.arity :以 n 为根的子树的元数(≥0)。
- n.root :判断 n 是否为树 t 的根节点。
- n.leaf :判断 n 是否为叶子节点(即 n.arity = 0 )。
- n.name : n 的构造函数名(如果有)。
- n.type : n 的类型(如果有)。
- n.data : n 携带的数据(如果有)。
- n.parent :当 n
超级会员免费看
订阅专栏 解锁全文
463

被折叠的 条评论
为什么被折叠?



