文章目录

  • 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)相关推荐

  1. Python数据结构实战—栈(Stack)

    文章目录 1.栈的性质(后进先出) 2.使用deque作为栈 3.使用双端队列实现Stack类 1.栈的性质(后进先出) s = [] #定义一个空数组装元素 s.append('https://ww ...

  2. Python 数据结构与算法——tree(树)

    (1)节点:Node.根节点:Root.叶子节点:LeafNode.内部节点:InternalNode: 我们可将该树表示为一个二维列表(lists of lists): >>> T ...

  3. Python数据结构实战——队列(Queue)

    文章目录 1.队列的性质(先进先出) 2.使用deque作为队列 3.使用双端队列实现Queue类 1.队列的性质(先进先出) wmt_stock_price_queue = [] wmt_stock ...

  4. Python数据结构实战——哈希表中的冲突处理(Collision Handling In Hash Table)

    文章目录 1.定义哈希类(能处理冲突) 2.测试 2.1.增加键值 2.2.查找对应键值 2.3.查看哈希表 2.4.更新值 2.5.删除键值对 1.定义哈希类(能处理冲突) class HashTa ...

  5. Python数据结构实战——双向链表(DoublyLinkedList)

    文章目录 1.定义结点类 2.定义链表类 2.1.打印正向链表 2.2.打印反向链表 2.3.寻找链表最后一个结点 2.4.计算链表长度 2.5.链表首部插入元素 2.6.链表尾部插入元素 2.7.链 ...

  6. Python数据结构实战——哈希表(HashTable)

    文章目录 1.定义哈希转换函数 2.定义哈希表类 2.1.不使用__setitem__ 2.2.使用__setitem__ 1.定义哈希转换函数 def get_hash(key):hash = 0f ...

  7. Python数据结构实战——单向链表(LinkedList)

    文章目录 1.定义结点类 2.定义链表类 2.1.打印整个链表 2.2.获取链表长度 2.3.链表头部插入元素 2.4.链表尾部插入元素 2.5.链表任意位置插入元素 2.6.链表任意位置删除元素 2 ...

  8. python画树递归_用递归的方式绘制小树_Python数据结构实战(1):递归(算法面试)_Python视频-51CTO学院...

    购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...

  9. Python+大数据-数仓实战之滴滴出行(二)

    Python+大数据-数仓实战之滴滴出行(二) 1. 数据转移 #验证sqoop是否工作 /export/server/sqoop-1.4.7/bin/sqoop list-databases \ - ...

最新文章

  1. 学习笔记(3.29)
  2. 使用@Transactional应注意的问题
  3. 解析几何:第三章 平面上的直线
  4. (论坛答疑点滴)怎么在datagrid翻页的时候确认?
  5. python编程(深拷贝和浅拷贝)
  6. ATMV1函数版v1
  7. python实现前向匹配中查找最大长度的最高重复模式的子字符串
  8. 遥感图像的辐射畸变与辐射校正
  9. Scala简介与Scala的下载安装
  10. 视频文件格式、视频封装格式、视频编码方式
  11. Container及其内部进程监控剖析
  12. The word 'classpath' is not correctly spelled解决方法
  13. Java 获取手机号码归属地以及运营商
  14. 职业生涯阶段性回顾之第一个五年计划
  15. C# 学习笔记:委托(5):可变性
  16. 仔细体验,我想从产品设计的角度分析分析微信的声音锁
  17. 海信合作徕卡首款激光电视将于9月亮相;SK海力士成功研发全球最高层238层4D NAND闪存 | 美通企业日报...
  18. 分布式数据库查询机制
  19. java基础之package和import语句
  20. 运筹优化——生产排程问题简介

热门文章

  1. SQL语句的一些重要操作
  2. check_mysql 脚本_如何使用myisamchk和mysqlcheck工具快速修复损坏的MySQL数据库文件
  3. docker本地构建kerberos单机环境
  4. top结合jstack处理线上cpu飙升问题
  5. Java将hive数据导入到hdfs_sqoop数据导入到Hdfs 或者hive
  6. IOS应用之一--异常处理(UncaughtExceptionHandler)
  7. [HNOI2002]营业额统计 Splay tree入门题
  8. java 对象深拷贝_java深入理解浅拷贝和深拷贝
  9. 更改窗口图标并将其显示在任务栏
  10. 《SOA In the real world》第一章译稿(含下载)