class Queue:
def __init__(self,max_size):
self.max_size = int(max_size)
self.queue = [] def put(self,data):
if self.max_size > 0:
if self.full():
raise ValueError('Queue is full!')
else:
self._put(data) def get(self):
if self._queue_size() > 0:
result = self._get()
empty_flag = False
else:
result = None
empty_flag = True
return result def empty(self):
if self._queue_size() == 0:
return True
else:
return False def full(self):
if self._queue_size() == self.max_size:
return True
else:
return False def _put(self,data):
self.queue.append(data) def _get(self):
result = self.queue[0]
self.queue.pop(0)
return result def _queue_size(self):
return len(self.queue) class TreeRoot:
def __init__(self,root_node):
self.root = root_node def 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 in x.child_list:
if not w in visited:
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 not queue.empty():
v =queue.get()
i = 1
try:
w=v.child_list[i]
except IndexError:
w = None
while w:
if not w in visited:
print(w.name)
visited.append(w)
queue.put(w)
i = i+1
try:
w = v.child_list[i]
except IndexError:
w = None
return visited def search(self,keyword):
visited_list = self.travel_bfs()
for v in visited_list:
if v.data == keyword:
return v
return None def built(self,node):
parent = node.parent
v = self.search(parent.data)
v.child_list.append(node) class TreeNode:
def __init__(self,name,groupid):
self.parent = None
self.child_list = []
self.name = name
self.groupid = groupid

Python非递归遍历多叉树的更多相关文章

  1. Python 非递归遍历图

    class Queue: def __init__(self,max_size): self.max_size = int(max_size) self.queue = [] def put(self ...

  2. 非递归遍历N-ary树Java实现

    2019-03-25 14:10:51 非递归遍历二叉树的Java版本实现之前已经进行了总结,这次做的是非递归遍历多叉树的Java版本实现. 在非递归遍历二叉树的问题中我个人比较推荐的是使用双whil ...

  3. c/c++叉树的创建与遍历(非递归遍历左右中,不破坏树结构)

    二叉树的创建与遍历(非递归遍历左右中,不破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...

  4. 145.Binary Tree Postorder Traversal---二叉树后序非递归遍历

    题目链接 题目大意:后序遍历二叉树. 法一:普通递归,只是这里需要传入一个list来存储遍历结果.代码如下(耗时1ms): public List<Integer> postorderTr ...

  5. 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java

    前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序 ...

  6. 二叉树3种递归和非递归遍历(Java)

    import java.util.Stack; //二叉树3种递归和非递归遍历(Java) public class Traverse { /******************一二进制树的定义*** ...

  7. C++编程练习(17)----“二叉树非递归遍历的实现“

    二叉树的非递归遍历 最近看书上说道要掌握二叉树遍历的6种编写方式,之前只用递归方式编写过,这次就用非递归方式编写试一试. C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历 ...

  8. c/c++二叉树的创建与遍历(非递归遍历左右中,破坏树结构)

    二叉树的创建与遍历(非递归遍历左右中,破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...

  9. JAVA递归、非递归遍历二叉树(转)

    原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...

随机推荐

  1. InnoSQL/MySQL并行复制的实现与配置

    InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...

  2. [原创]nginx添加module之threads

    一.安装nginx yum安装nginx 折叠源码 1 2 3 4 5 6 7 8 9 10 11 12 # 添加nginx源 rpm -ivh http://nginx.org/packages/c ...

  3. ABAP抓取异常的方法:try,endtry

    部分转自:http://www.cnblogs.com/jiangzhengjun/p/4292428.html +4.Funcion函数异常处理 说明: 异常处理机制可以有效避免 dump发生, : ...

  4. Json和List的表示形式

    JsonObject和List的表示形式 package payItem.test; import java.util.ArrayList; import java.util.List; import ...

  5. 【Flask】关于Flask的request属性

    前言 在进行Flask开发中,前端需要发送不同的请求及各种带参数的方式,比如GET方法在URL后面带参数和POST在BODY带参数,有时候又是POST的表单提交方式,这个时候就需要从request提取 ...

  6. SDUTOJ2465:其实玩游戏也得学程序(bfs+优先队列+回溯)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2465 题目描述 由于前两次的打击,ZYJ同学不 ...

  7. Andrew Ng-ML-第十四章-无监督学习

    1.无监督学习概述  图1.无监督学习 有监督学习中,数据是有标签的,而无监督学习中的训练集是没有标签的,比如聚类算法. 2.k-means算法 k-means算法应用是十分广泛的聚类方法,它包括两个 ...

  8. [lr] 基本色调调整和色调曲线

    基本色调调整 • 曝光度调整 ▶ 控制区域 在Lightroom中,软件提示我们曝光控制的是如图中间调的区域.我们把鼠标移动到曝光工具条上,软件会提示我们这个区域: ▶ 实际效果 ▪ 增加曝光值 增加 ...

  9. testng入门教程11 TestNG运行JUnit测试

    现在,您已经了解了TestNG和它的各种测试,如果现在担心如何重构现有的JUnit代码,那就没有必要,使用TestNG提供了一种方法,从JUnit和TestNG按照自己的节奏.也可以使用TestNG执 ...

  10. Python3 socketserver模块

    socketserver(在Python2.*中的是SocketServer模块)是标准库中一个高级别的模块.用于简化网络客户与服务器的实现(在前面使用socket的过程中,我们先设置了socket的 ...