实现深度优先方式遍历树
来源:互联网 发布:淘宝千里眼怎么用 编辑:程序博客网 时间:2024/05/29 10:40
以深度优先方式遍历树形节点的生成器。
class Node: def __init__(self, value): self._value = value self._children = [] def __repr__(self): return 'Node({!r})'.format(self._value) def add_child(self, node): self._children.append(node) def __iter__(self): return iter(self._children) def depth_first(self): yield self for c in self: yield from c.depth_first()# Exampleif __name__ == '__main__': root = Node(0) child1 = Node(1) child2 = Node(2) root.add_child(child1) root.add_child(child2) child1.add_child(Node(3)) child1.add_child(Node(4)) child2.add_child(Node(5)) for ch in root.depth_first(): print(ch)
# Outputs Node(0), Node(1), Node(3), Node(4), Node(2), Node(5)
在这段代码中,depth_first() 方法简单直观。 它首先返回自己本身并迭代每一个子节点并 通过调用子节点的 depth_first() 方法(使用 yield from 语句)返回对应元素。
来自:Python cookbook
阅读全文
0 0
- 实现深度优先方式遍历树
- java实现深度优先遍历
- Java 非递归方式深度优先遍历二叉树
- 二叉树的深度优先遍历和深度优先遍历
- 二叉树的深度优先遍历与广度优先遍历 [C++实现]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- java实现二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 树的深度优先遍历和广度优先遍历非递归实现.
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 深度优先遍历与广度优先遍历(c++二叉树算法实现)
- 树的深度优先遍历和广度优先遍历的原理和java实现代码
- Android进阶三:自定义View
- 数学逻辑习题集(2)
- SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失败快速响应,达到熔断效果
- Hard Process
- 面向对象程序设计上机练习一(函数重载)
- 实现深度优先方式遍历树
- 前端书籍推荐
- hdu1008
- Security 4.0 CAS实现单点登录
- Java学习笔记02
- 查看hive分区挂载的路径
- 机器学习教程 之 朴素贝叶斯分类器:判别皮马印第安糖尿病人数据集
- Angular2
- 11. 部署Web应用