python 树遍历

使用python实现的树遍历,包括宽度优先和深度优先

ef dfs():
    tree = {
        ‘A‘: [‘B‘, ‘C‘],
        ‘B‘: [‘D‘, ‘E‘],
        ‘C‘: [‘F‘, ‘G‘],
        ‘D‘: [‘H‘, ‘I‘],
        ‘E‘: [],
        ‘F‘: [],
        ‘G‘: [],
        ‘H‘: [],
        ‘I‘: []
    }
    leaf = []
    to_crawl = deque([‘A‘])
    while to_crawl:
        current = to_crawl.popleft()
        print current, to_crawl
        children = tree[current]
        if len(children)> 0:
            # width first
            # to_crawl.extend(children)
            # depth first
            to_crawl.extendleft(children[::-1])
            print to_crawl
        else:
            leaf.append(current)
    print leaf

对于图的遍历稍微调整一下即可,主要是图需要考虑的重复遍历的问题,所以需要记录已经遍历过哪些节点,每次获得新的children之后减去已遍历过的节点即可

时间: 2024-12-12 04:36:14

python 树遍历的相关文章

python GUI编程tkinter示例之目录树遍历工具

摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用新目录中的文件列表代替旧文件列表.这里新增了列表框.文本框和滚动条,此外还增加了鼠标单击.键盘按下.滚动操作等回调函数.其实,整个应用就是一系列控件和函数的组合. #python 3.6 import os from time import sleep from tkinter import * #

Python文件遍历二种方法

分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历.方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames).注意,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中

jquery:树遍历

.children() 获得元素集合中每个匹配元素的子元素,选择器选择性筛选. <!DOCTYPE html> <html> <head> <style> body { font-size:16px; font-weight:bolder; } p { margin:5px 0; } </style> <script src="http://code.jquery.com/jquery-latest.js"><

06. 父子节点(树)遍历写法小结

原文:06. 父子节点(树)遍历写法小结 对于树/图的遍历,通常有2种算法来实现:迭代(Iteration)和递归(Recursion),迭代是利用循环反复取值/赋值的过程:递归则是反复自己调用自己来获得最终结果.SQL Server里的递归有32层嵌套限制,目的在于防止代码进入死循环,除非使用提示OPTION (MAXRECURSION 0). 测试数据: if OBJECT_ID('city') is not null drop table city GO create table city

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

python list遍历时删除元素

python list遍历时候删除还真需要注意下,今天帮同学处理数据,竟然傻逼了. 需求: 除了第一列,给每列加一个序号如:"1:0","2:0","3:20100307",然后删除冒号后为0的数据. 推荐做法: arrays = [ ['5001', '0', '0', '20100307', '20150109', '2', '3', '75', '0', '0', '114', '13', '2', '0', '0'], ['10001',

python list遍历

python list遍历 是对列表进行的经常性的操作.比如我们需要遍历一个列表: info = ['a','b','c','d','ee','fff'] for m in range(len(info)): print info[m] 有些朋友可能喜欢这样操作,但是其实没必要计算列表的长度了.我们可以直接用列表的迭代来处理,比如: for m in info: print m

python+selenium遍历某一个标签中的内容

一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获取列表文本:可用于校验列表是否存在你需要的文本内容 1.获取内容不包含嵌套层列表 给出代码: from selenium import webdriver import time d = webdriver.Chrome() d.maximize_window() # 窗口最大化###登录某网站 d.get(

树遍历以及图遍历的方法

树遍历: 根节点=D=Degree  左节点=L=Left  右节点=R=Right 1.前序遍历(DLR) 2.中序遍历(LDR) 3.后序遍历(LRD) 4.层次遍历(一层一层的遍历) 前三种遍历均可用递归或者非递归的方式来遍历. 层次遍历可以设一个队列,把元素放在队列里,每次输出队头元素. 图遍历: 1.广度优先遍历 也称为广度优先搜索(BFS)(类似于树的层次遍历) 2.深度优先遍历 也称为深度优先搜索(DFS) (类似于树的前序遍历) 这两种遍历均可用来判断图的连通性. 原文地址:ht