zoukankan      html  css  js  c++  java
  • 编程练习:实现树的层次遍历 (CVTE笔试)

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

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

    1.将树结构入队列1。

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

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

    4.与3相反。

     1 #!/usr/bin/env python3
     2 
     3 import queue
     4 
     5 class Node(object):
     6         def __init__(self, data, left=None, right=None):
     7                 self.data = data
     8                 self.left = left
     9                 self.right = right
    10 tree = Node(1,Node(2,Node(4,Node(8)),Node(5)),Node(3,Node(6),Node(7)))
    11 
    12 def level_traversal(tree):
    13         q1 = queue.Queue()
    14         q2 = queue.Queue()
    15         q1.put(tree)
    16         try:
    17                 while not q1.empty() or not q2.empty():
    18                         while not q1.empty():
    19                                 e = q1.get()
    20                                 print(e.data, end=" ")
    21                                 q2.put(e.left)
    22                                 q2.put(e.right)
    23                         print()
    24                         while not q2.empty():
    25                                 e = q2.get()
    26                                 print(e.data, end=" ")
    27                                 q1.put(e.left)
    28                                 q1.put(e.right)
    29                         print()
    30         except AttributeError:
    31                 print()
    32                 print("tree has traversaled")
    33 
    34 if __name__=="__main__":
    35         level_traversal(tree)
  • 相关阅读:
    Linux改主机名最简单方法
    while 循环
    Appium UI自动化的那些梗
    常量函数、常量引用参数、常量引用返回值[C++]
    常量指针和指针常量的区别
    XHProf中文手册
    xhprof学习笔记
    C语言中内存操作函数
    DRF源码剖析——视图
    2020CCPC秦皇岛 k Kingdom’s Power
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6523104.html
Copyright © 2011-2022 走看看