Python数据结构实战——数(Tree)
文章目录
- 1.实验目标
- 2.定义树类
- 3.构建树并打印
- 4.显示结果
1.实验目标
构建一颗如下图所示的树:
2.定义树类
class TreeNode:def __init__(self, data):self.data = data #树的值self.children = [] #树的孩子结点self.parent = None #树的父结点def get_level(self): #划分层级level = 0p = self.parent #p为父结点while p: #如果父结点存在level += 1p = p.parent #p移向父结点return level #返回当前层级def print_tree(self):spaces = ' '*self.get_level()*3 #根据层级打印空格prefix = spaces + "|__" if self.parent else "" #如果没有父结点则不需要打印print(prefix + self.data)if self.children:for child in self.children: #递归child.print_tree()def add_child(self, child):child.parent = self #要添加的父结点是selfself.children.append(child) #父结点self的children添加child
3.构建树并打印
def build_product_tree():root = TreeNode("Electronics") #实例化rootlaptop = TreeNode("Laptop") laptop.add_child(TreeNode("Mac")) #父结点是laptoplaptop.add_child(TreeNode("Surface"))laptop.add_child(TreeNode("Thinkpad"))cellphone = TreeNode("Cell Phone")cellphone.add_child(TreeNode("iphone"))cellphone.add_child(TreeNode("Google Pixel"))cellphone.add_child(TreeNode("vivo"))tv = TreeNode("TV")tv.add_child(TreeNode("Samsung"))tv.add_child(TreeNode("LG"))root.add_child(laptop)root.add_child(cellphone)root.add_child(tv)root.print_tree() #打印树
4.显示结果
build_product_tree() #先建立树,再打印树
Python数据结构实战——数(Tree)相关推荐
- Python数据结构实战—栈(Stack)
文章目录 1.栈的性质(后进先出) 2.使用deque作为栈 3.使用双端队列实现Stack类 1.栈的性质(后进先出) s = [] #定义一个空数组装元素 s.append('https://ww ...
- Python 数据结构与算法——tree(树)
(1)节点:Node.根节点:Root.叶子节点:LeafNode.内部节点:InternalNode: 我们可将该树表示为一个二维列表(lists of lists): >>> T ...
- Python数据结构实战——队列(Queue)
文章目录 1.队列的性质(先进先出) 2.使用deque作为队列 3.使用双端队列实现Queue类 1.队列的性质(先进先出) wmt_stock_price_queue = [] wmt_stock ...
- Python数据结构实战——哈希表中的冲突处理(Collision Handling In Hash Table)
文章目录 1.定义哈希类(能处理冲突) 2.测试 2.1.增加键值 2.2.查找对应键值 2.3.查看哈希表 2.4.更新值 2.5.删除键值对 1.定义哈希类(能处理冲突) class HashTa ...
- Python数据结构实战——双向链表(DoublyLinkedList)
文章目录 1.定义结点类 2.定义链表类 2.1.打印正向链表 2.2.打印反向链表 2.3.寻找链表最后一个结点 2.4.计算链表长度 2.5.链表首部插入元素 2.6.链表尾部插入元素 2.7.链 ...
- Python数据结构实战——哈希表(HashTable)
文章目录 1.定义哈希转换函数 2.定义哈希表类 2.1.不使用__setitem__ 2.2.使用__setitem__ 1.定义哈希转换函数 def get_hash(key):hash = 0f ...
- Python数据结构实战——单向链表(LinkedList)
文章目录 1.定义结点类 2.定义链表类 2.1.打印整个链表 2.2.获取链表长度 2.3.链表头部插入元素 2.4.链表尾部插入元素 2.5.链表任意位置插入元素 2.6.链表任意位置删除元素 2 ...
- python画树递归_用递归的方式绘制小树_Python数据结构实战(1):递归(算法面试)_Python视频-51CTO学院...
购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...
- Python+大数据-数仓实战之滴滴出行(二)
Python+大数据-数仓实战之滴滴出行(二) 1. 数据转移 #验证sqoop是否工作 /export/server/sqoop-1.4.7/bin/sqoop list-databases \ - ...
最新文章
- 学习笔记(3.29)
- 使用@Transactional应注意的问题
- 解析几何:第三章 平面上的直线
- (论坛答疑点滴)怎么在datagrid翻页的时候确认?
- python编程(深拷贝和浅拷贝)
- ATMV1函数版v1
- python实现前向匹配中查找最大长度的最高重复模式的子字符串
- 遥感图像的辐射畸变与辐射校正
- Scala简介与Scala的下载安装
- 视频文件格式、视频封装格式、视频编码方式
- Container及其内部进程监控剖析
- The word 'classpath' is not correctly spelled解决方法
- Java 获取手机号码归属地以及运营商
- 职业生涯阶段性回顾之第一个五年计划
- C# 学习笔记:委托(5):可变性
- 仔细体验,我想从产品设计的角度分析分析微信的声音锁
- 海信合作徕卡首款激光电视将于9月亮相;SK海力士成功研发全球最高层238层4D NAND闪存 | 美通企业日报...
- 分布式数据库查询机制
- java基础之package和import语句
- 运筹优化——生产排程问题简介
热门文章
- SQL语句的一些重要操作
- check_mysql 脚本_如何使用myisamchk和mysqlcheck工具快速修复损坏的MySQL数据库文件
- docker本地构建kerberos单机环境
- top结合jstack处理线上cpu飙升问题
- Java将hive数据导入到hdfs_sqoop数据导入到Hdfs 或者hive
- IOS应用之一--异常处理(UncaughtExceptionHandler)
- [HNOI2002]营业额统计 Splay tree入门题
- java 对象深拷贝_java深入理解浅拷贝和深拷贝
- 更改窗口图标并将其显示在任务栏
- 《SOA In the real world》第一章译稿(含下载)