--- 树结构相关术语 ---1. 节点 (Node):组成树的基本部分2. 边 (Edge):组成树的另一个基本部分,连接节点叶节点没有出边,根节点没有入边3. 根 (Root):唯一一个没有入边的节点4. 路径 (Path):由边依次连接在一起的节点的有序列表5. 子节点 (Children):入边来自同一个节点的若干节点,称为这个节点的子节点6. 父节点 (Parent):一个节点是其所有出边所连接节点的父节点7. 兄弟节点 (Sibling):具有同一个父节点的节点8. 子树 (Subtree):一个节点和其所有子孙节点,以及相关边的集合9. 叶节点 (Leaf):没有子节点的节点10. 层级 (Level):从根节点开始到达一个节点的路径,所包含的边的数量11. 高度 (Height):树中所有节点的最大层级
class Node(object):def __init__(self, name, type='dir'):self.name = nameself.type = typeself.children = []self.parent = Node# 链式存储def __repr__(self):return self.namen = Node('hello')
n2 = Node('world')
n.children.append(n2)
n2.parent = n
树的应用:
class FileSystemTree(object):"""文件系统"""def __init__(self):self.root = Node('/')self.now = self.rootdef mkdir(self, name):# name 以 / 结尾if name[-1] != '/':name += '/'node = Node(name)self.now.children.append(node)node.parent = self.nowdef ls(self):return self.now.childrendef cd(self, name):# '/var/python'if name[-1] != '/':name += '/'if name == '../':self.now = self.now.parentreturnfor child in self.now.children:if child.name == name:self.now = childreturnraise ValueError('Invalid dir!')tree = FileSystemTree()
tree.mkdir('var')
tree.mkdir('bin/')
tree.mkdir('usr/')tree.cd('bin/')
tree.mkdir('python/')tree.cd('../')print(tree.ls())

2.11_tree_树相关推荐

  1. 判断两个树是否相等和判断tree1是否包含tree2 python实现

    判断两个树是否相等 def equal(node_a, node_b):"""判断两个树是否相等:param node_a: :param node_b: :return ...

  2. 论文溯源树AMiner

    来自 DBLP.ArXiv.STM 等多家学术出版机构和平台的数据表明,在过去 20 年间,计算机科学.物理学.统计学等研究领域的出版物总量都有大幅增加.像 CVPR.AAAI 等有关人工智能等新兴领 ...

  3. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  4. 深度树匹配模型(TDM)

    深度树匹配模型(TDM) 算法介绍 Tree-based Deep Match(TDM)是由阿里妈妈精准定向广告算法团队自主研发,基于深度学习上的大规模(千万级+)推荐系统算法框架.在大规模推荐系统的 ...

  5. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  6. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  7. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  8. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  9. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

最新文章

  1. LARS 算法简介-机器学习
  2. 2021 年 ICT 行业预测
  3. python定时器 循环_Python3 循环定时休息并播放音乐 (Windows)
  4. 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
  5. centos7下别名(alias)的特殊用法
  6. 2021牛客暑期多校训练营3 B Black and white 最小生成树 + 思维
  7. LeetCode MySQL 1212. 查询球队积分
  8. html5 输入框有值无效,HTML5基础 input required 输入框内必须有内容
  9. multisim中轻触开关在哪_现货供应轻触开关|品质确保|厂家直销
  10. OpenShift 4 之一些实用命令和技巧
  11. UVa 10570 - Meeting with Aliens
  12. HTTP权威指南-学习笔记(三)HTTP方法,状态码
  13. 随记:Ubuntu12.04下关闭图形界面的相关问题
  14. Kata: 从随机的三字符列表组中恢复秘密字符串
  15. phpQuery - PHP 处理 HTML DOM 的好帮手
  16. PID算法优化之积分器抗饱和处理
  17. guass白名单的配置命令
  18. qq不能发说说显示服务器错误,qq为什么发送不成word服务器拒绝发送离线请求. - 卡饭网...
  19. 常见EI会议出版商IOP出版计划供参考
  20. 虚拟现实产业发展白皮书(2019年)发布

热门文章

  1. mac 建立软链接_MAC要倒闭了吗?正装口红80块,生姜高光105,让爱老师存点钱吧!...
  2. Eclipse“ctrl+左键”链到实现类
  3. 只学一门java可行吗,java可以作为第一门编程语言学习吗
  4. java server.xml_tomcat配置文件server.xml详解
  5. Java判断字符串的数字类型(小数、整数)
  6. @Scheduled定时任务不生效的原因
  7. Eureka 配置参数说明
  8. Android开发笔记(二十七)对象序列化
  9. 模型有锯齿_小雕课堂 | 最好的抗锯齿,画质保留提升帧数
  10. spring原理学习