#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/8/14 10:56
# @Author : 马贝贝
# @Software: PyCharm
# @Project : final_project
# @File : guangduyouxian.py
# @warning : read only but owner
# 定义二叉树节点
from queue import Queue
class TreeNode(object):
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 依据队列先进先出的原理写广度优先算法
class Gtree(object):
def gscan(self, glist, node):
queue = Queue()
queue.put(node)
while queue.empty() is not True:
#取出并删除该节点
nodes = queue.get()
glist.append(nodes.val)
if nodes.left != None:
queue.put(nodes.left)
if nodes.right != None:
queue.put(nodes.right)
return glist
if __name__ == '__main__':
node = TreeNode(77)
node.left = TreeNode(67, left=TreeNode(57, left=TreeNode(36), right=TreeNode(60)),
right=TreeNode(70, left=TreeNode(67)))
node.right = TreeNode(87, left=TreeNode(66), right=TreeNode(99))
gtree = Gtree()
glist = gtree.gscan([], node)
print(glist)
二叉树广度优先算法的python实现
最新推荐文章于 2024-06-30 08:45:00 发布