'''
遍历是访问树的所有节点的过程,也可以打印它们的值。 因为所有节点都通过边(链接)连接,所以始终从根(头)节点开始。
也就是说,我们不能随机访问树中的一个节点。 这里介绍三种方式来遍历一棵树 -顺序遍历 -前序遍历 -后序遍历
''' class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data def insert(self, data):
if self.data:
if data < self.data:
if self.left is None:
self.left = Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data # Left -> Root -> Right 顺序遍历
def inorderTraversal(self, root):
res = []
if root:
res = self.inorderTraversal(root.left)
res.append(root.data)
res = res + self.inorderTraversal(root.right)
return res # Root -> Left ->Right 前序遍历
def PreorderTraversal(self, root):
res = []
if root:
res.append(root.data)
res = res + self.PreorderTraversal(root.left)
res = res + self.PreorderTraversal(root.right)
return res # Left ->Right -> Root 后序遍历
def PostorderTraversal(self, root):
res = []
if root:
res = self.PostorderTraversal(root.left)
res = res + self.PostorderTraversal(root.right)
res.append(root.data)
return res root = Node(27)
root.insert(14)
root.insert(35)
root.insert(10)
root.insert(19)
root.insert(31)
root.insert(42)
print(root.inorderTraversal(root))
print(root.PreorderTraversal(root))
print(root.PostorderTraversal(root))

最新文章

  1. 【原】SDWebImage源码阅读(五)
  2. HTML之JS学习
  3. 开源网站.NETMVC+ Layui+SqlSugar+RestSharp
  4. java.lang.UnsatisfiedLinkError: C:\apache-tomcat-8.0.21\bin\tcnative-1.dll: Can&#39;t load IA 32-bit .dll on a AMD 64-bit platform
  5. valgind使用错误——检测不同位目标程序
  6. struts2 if标签示例
  7. [改善Java代码]多种最值算法,适时选择
  8. Python (九) 协程以及数据库操作
  9. PHP 动态调整内存限制
  10. R语言︱用excel VBA把xlsx批量转化为csv格式
  11. C++实验指导
  12. SQLServer之创建事务序列化
  13. 移动端无法复制:使用clipboard.js碰到的一个小问题
  14. oracle if/else功能的实现的3种写法
  15. 解决git中文乱码问题
  16. [Winform]Media Player播放控制面板控制,单击事件截获
  17. ovs 下流表port 1进入,port 1出去
  18. Objective-C:三种文件导入的方式比较
  19. Hadoop NameNode 高可用 (High Availability) 实现解析
  20. java中String的内存位置

热门文章

  1. Stars in Your Window POJ - 2482
  2. Folding UVA - 1630
  3. 水题 Codeforces Round #303 (Div. 2) D. Queue
  4. Eclipse安装svn插件的几种方式 -- 转
  5. Python 版本对比
  6. 洛谷P2763 试题库问题(最大流)
  7. Vue 2.0入门基础知识之内部指令
  8. cordova应用使用手机调试
  9. MongoDB部署、使用、监控及调优
  10. 机器学习在SAP Cloud for Customer中的应用