zoukankan      html  css  js  c++  java
  • 二叉树的实现

     1 #定义二叉树的节点
     2 class Node(object):
     3     def __init__(self,elem):
     4         """
     5         param: self.elem 是节点的数据域
     6                 self.lchild 是节点的左孩子
     7                 self.rchild 是节点的右孩子
     8         """
     9         self.elem = elem
    10         self.lchild = None
    11         self.rchild = None
    12 
    13 class Tree(object):
    14     def __init__(self):
    15         self.root = None
    16     #添加节点
    17     def add(self,elem):
    18         """
    19         param: elem 是传进来的数据,我们要实例化一个节点接收它,
    20                 queue: 创建一个队列来接收和弹出节点       
    21         """
    22         #创建节点
    23         node = Node(elem)    
    24         if self.root == None:
    25             """如果根节点是None,则表示一颗空树,直接把该节点赋给root节点"""
    26             self.root = node
    27             return
    28         queue = []
    29         queue.append(self.root)
    30         while queue:
    31             """队列的弹出要加0,与栈相仿"""
    32             curNode = queue.pop(0)
    33             if curNode.lchild == None:
    34                 curNode.lchild = node
    35                 return
    36             else:
    37                 queue.append(curNode.lchild)
    38             if curNode.rchild == None:
    39                 curNode.rchild = node
    40                 return
    41             else: 
    42                 queue.append(curNode.rchild)
    43 
    44     #广度优先遍历
    45     def travel(self):
    46         queue = []
    47         #判断根节点是否存在
    48         if self.root is None:
    49             return
    50         else:
    51             queue.append(self.root)
    52         while queue:
    53             curNode = queue.pop(0)
    54             print(curNode.elem,end='	')
    55             if curNode.lchild is not None:
    56                 queue.append(curNode.lchild)
    57             if curNode.rchild is not None:
    58                 queue.append(curNode.rchild)
    59             
    60 if __name__ == '__main__':
    61     tree = Tree()
    62     tree.add('A')
    63     tree.add('B')
    64     tree.add('C')
    65     tree.add('D')
    66     tree.add('E')
    67     print('广度优先遍历')
    68     tree.travel()
    1 广度优先遍历
    2 A       B       C       D       E
    正是江南好风景
  • 相关阅读:
    I2S波形解析
    F407整点原子I2C波形解码
    WAVE格式文件说明
    ADC结构体初始化成员
    这次,我是真的想吐槽MDK
    I2S源程序(正点原子F407探索者)
    强制类型转换
    嵌套结构体的初始化
    lua 元方法 __index
    lua pairs 与 ipairs
  • 原文地址:https://www.cnblogs.com/monsterhy123/p/12894316.html
Copyright © 2011-2022 走看看