python多叉树_Python非递归遍历多叉树

classQueue:def __init__(self,max_size):

self.max_size=int(max_size)

self.queue=[]defput(self,data):if self.max_size >0:ifself.full():raise ValueError('Queue is full!')else:

self._put(data)defget(self):if self._queue_size() >0:

result=self._get()

empty_flag=Falseelse:

result=None

empty_flag=Truereturnresultdefempty(self):if self._queue_size() ==0:returnTrueelse:returnFalsedeffull(self):if self._queue_size() ==self.max_size:returnTrueelse:returnFalsedef_put(self,data):

self.queue.append(data)def_get(self):

result=self.queue[0]

self.queue.pop(0)returnresultdef_queue_size(self):returnlen(self.queue)classTreeRoot:def __init__(self,root_node):

self.root=root_nodedef travel_dbfs(self):#图的深度遍历

stack_list =[]

visited=[]

stack_list.append(self.root)

visited.append(self.root)while len(stack_list) >0:

x= stack_list[-1]for w inx.child_list:if not w invisited:print(w.name)

visited.append(w)

stack_lsit.append(w)break

if stack_list[-1] ==x:

stack_list.pop()def travel_bfs(self):#图的广度遍历

queue = Queue(100000)

visited=[]

queue.put(self.root)

visited.append(self.root)while notqueue.empty():

v=queue.get()

i= 1

try:

w=v.child_list[i]exceptIndexError:

w=Nonewhilew:if not w invisited:print(w.name)

visited.append(w)

queue.put(w)

i= i+1

try:

w=v.child_list[i]exceptIndexError:

w=Nonereturnvisiteddefsearch(self,keyword):

visited_list=self.travel_bfs()for v invisited_list:if v.data ==keyword:returnvreturnNonedefbuilt(self,node):

parent=node.parent

v=self.search(parent.data)

v.child_list.append(node)classTreeNode:def __init__(self,name,groupid):

self.parent=None

self.child_list=[]

self.name=name

self.groupid= groupid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值