|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 翰飞gs 于 2020-2-9 18:31 编辑
- class Node(object):
- """节点类"""
- def __init__(self, item):
- self.item = item
- self.lchild = None
- self.rchild = None
- class Tree(object):
- """二叉树"""
- def __init__(self):
- self.root = None
- def add(self, item):
- # 为树添加节点
- node = Node(item)
- # 如果树是空的,对根节点赋值
- if self.root is None:
- self.root = node
- return
- # 对已有节点进行层次遍历
- queue = [self.root]
- # 只要队列不为空
- while queue:
- # 弹出队列的第一个元素
- cur_node = queue.pop(0)
- # 如果左节点为空,赋值;不为空,把左节点加入队列
- if cur_node.lchild is None:
- cur_node.lchild = node
- return
- else:
- queue.append(cur_node.lchild)
- if cur_node.rchild is None:
- cur_node.rchild = node
- return
- else:
- queue.append(cur_node.rchild)
- def breadth_travel(self):
- """广度遍历"""
- if self.root is None:
- return
- queue = [self.root]
- while queue:
- cur_node = queue.pop(0)
- print(cur_node.item)
- if cur_node.lchild is not None:
- queue.append(cur_node.lchild)
- if cur_node.rchild is not None:
- queue.append(cur_node.rchild)
- if __name__ is "__main__":
- tree = Tree()
- tree.add(1)
- tree.add(2)
- tree.add(3)
- tree.add(4)
- tree.add(5)
- tree.breadth_travel()
复制代码
if __name__ == "__main__":
|
|