Python非递归遍历多叉树
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非递归遍历多叉树的更多相关文章
- Python 非递归遍历图
class Queue: def __init__(self,max_size): self.max_size = int(max_size) self.queue = [] def put(self ...
- 非递归遍历N-ary树Java实现
2019-03-25 14:10:51 非递归遍历二叉树的Java版本实现之前已经进行了总结,这次做的是非递归遍历多叉树的Java版本实现. 在非递归遍历二叉树的问题中我个人比较推荐的是使用双whil ...
- c/c++叉树的创建与遍历(非递归遍历左右中,不破坏树结构)
二叉树的创建与遍历(非递归遍历左右中,不破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...
- 145.Binary Tree Postorder Traversal---二叉树后序非递归遍历
题目链接 题目大意:后序遍历二叉树. 法一:普通递归,只是这里需要传入一个list来存储遍历结果.代码如下(耗时1ms): public List<Integer> postorderTr ...
- 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序 ...
- 二叉树3种递归和非递归遍历(Java)
import java.util.Stack; //二叉树3种递归和非递归遍历(Java) public class Traverse { /******************一二进制树的定义*** ...
- C++编程练习(17)----“二叉树非递归遍历的实现“
二叉树的非递归遍历 最近看书上说道要掌握二叉树遍历的6种编写方式,之前只用递归方式编写过,这次就用非递归方式编写试一试. C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历 ...
- c/c++二叉树的创建与遍历(非递归遍历左右中,破坏树结构)
二叉树的创建与遍历(非递归遍历左右中,破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
随机推荐
- 011-jdk1.8版本新特性三-Date API
1.7.Date API Java 8 在包java.time下包含了一组全新的时间日期API.新的日期API和开源的Joda-Time库差不多,但又不完全一样,下面的例子展示了这组新API里最重要的 ...
- golang使用vendor目录来管理依赖包
Vendor目录介绍 随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案.在Go 1.6之前,你需要手动的设置环境变量GO1 ...
- windows安装并破解navicat.
1:下载以下两个文件. patchNavicat.exe: https://pan.baidu.com/s/1ZtV20GUGfZHcXHRTEb5tYg navicatforMysql.exe: ...
- 在vue init webpack my-project卡住的问题
在安装完node.js后,也用cnpm代替了npm,然后使用cnpm在node.js的安装路径下安装了vue-cli:cnpm install --global vue-cli.然后使用vue ini ...
- 阻止提交按钮的默认 action
使用 preventDefault() 函数来阻止对表单的提交. 示例代码如下: <html><head><script type="text/javascri ...
- 使用pssh进行并行批量操作
假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是 ...
- Linux文本编辑器快捷方式
- soapUI-DataSink
1.1.1 DataSink 1.1.1.1 概述 – DataSink Option Description Properties DataSink属性表 Toolbar DataSink ...
- Windows2008 IIS配置FTP站点
视频教程:http://vodcdn.video.taobao.com/player/ugc/tb_ugc_pieces_core_player_loader.swf?version=1.0.2015 ...
- GNU Make中文手册(一)
GNU Make 翻译:loverszhaokai 最新版文档请参考github: https://github.com/loverszhaokai/GNUMakeManual_CN 欢迎大家提出修改 ...