直接层次遍历是比较简单的,但是题目要求的分层打印,这就变得稍微有些麻烦

我是采用两个队列的方法实现。

1.将树结构入队列1。

2.当队列1和队列2都不为空的时候,则一直循环。

3.当队列1不为空的时候,就一直取出队列1中的元素,打印其根节点数据,然后将其子树存入队列2,直到队列1为空结束。

4.与3相反。

 #!/usr/bin/env python3

 import queue

 class Node(object):
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
tree = Node(1,Node(2,Node(4,Node(8)),Node(5)),Node(3,Node(6),Node(7))) def level_traversal(tree):
q1 = queue.Queue()
q2 = queue.Queue()
q1.put(tree)
try:
while not q1.empty() or not q2.empty():
while not q1.empty():
e = q1.get()
print(e.data, end=" ")
q2.put(e.left)
q2.put(e.right)
print()
while not q2.empty():
e = q2.get()
print(e.data, end=" ")
q1.put(e.left)
q1.put(e.right)
print()
except AttributeError:
print()
print("tree has traversaled") if __name__=="__main__":
level_traversal(tree)

最新文章

  1. web-inf目录和meta-inf目录
  2. Hash校验
  3. Ubuntu Java Envrioment
  4. C Primer Plus_第二章_C语言概述_复习题与编程练习
  5. html5响应式设置<meta>
  6. Vue入门演示
  7. oracle索引,索引的建立、修改、删除
  8. awsomeplayer结构认识
  9. BaseAdapter 注意的关键点!
  10. win2k/xp查看当前进程
  11. 使用Visual Studio 寻找App性能瓶颈
  12. 创建 AngularJS 自定义过滤器,带自定义参数
  13. 初见 ThreadLocal 类
  14. GO开发[二]:golang语言基础
  15. 巧用第三方快速开发Android App 热门第三方SDK及框架
  16. Exception in thread "main" java.lang.UnsupportedClassVersionError : unsupported major.minor version 52.0
  17. 【JMeter】前置处理器
  18. 实验吧—密码学——WP之 困在栅栏里的凯撒
  19. IntelliJ IDEA 14.1.4破解方法-通过程序根据用户名生成注册码
  20. 如何使用Java读写系统属性?

热门文章

  1. VS release模式下进行调试设置
  2. SqlService 并发测试
  3. TCP通讯代码
  4. javaweb使用button的onclick属性访问servlet
  5. Caffe2 手册(Intro Tutorial)[2]
  6. Spark教程——(9)Oozie编排Spark任务
  7. Golang mysql数据库
  8. Idea牛逼插件,拿走不谢
  9. 2020.2.19 restful的学习
  10. cookie、sessionStorage和localStorage的区别