编程练习:实现树的层次遍历 (CVTE笔试)
2024-09-07 00:39:15
直接层次遍历是比较简单的,但是题目要求的分层打印,这就变得稍微有些麻烦
我是采用两个队列的方法实现。
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)
最新文章
- web-inf目录和meta-inf目录
- Hash校验
- Ubuntu Java Envrioment
- C Primer Plus_第二章_C语言概述_复习题与编程练习
- html5响应式设置<;meta>;
- Vue入门演示
- oracle索引,索引的建立、修改、删除
- awsomeplayer结构认识
- BaseAdapter 注意的关键点!
- win2k/xp查看当前进程
- 使用Visual Studio 寻找App性能瓶颈
- 创建 AngularJS 自定义过滤器,带自定义参数
- 初见 ThreadLocal 类
- GO开发[二]:golang语言基础
- 巧用第三方快速开发Android App 热门第三方SDK及框架
- Exception in thread ";main"; java.lang.UnsupportedClassVersionError : unsupported major.minor version 52.0
- 【JMeter】前置处理器
- 实验吧—密码学——WP之 困在栅栏里的凯撒
- IntelliJ IDEA 14.1.4破解方法-通过程序根据用户名生成注册码
- 如何使用Java读写系统属性?