python实现二叉排序树
作者:咕嘟咕嘟_? 发布时间:2022-08-26 04:34:37
标签:python,二叉,排序树
方法一(粗暴)
#二叉排序树
class BTree():
def __init__(self,data):
self.left = None
self.right = None
if type(data) == list:
self.data = data[0]
for d in data[1:]:
self.insert(d)
else:
self.data = data
def insert(self,data):
bt = self
while True:
if data <= bt.data:
if bt.left == None:
bt.left = BTree(data)
break
else:
bt = bt.left
else:
if bt.right == None:
bt.right = BTree(data)
break
else:
bt = bt.right
def mid_order(self):
res = []
stack = []
node = self
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
res.append(node.data)
node = node.right
return res
data = [5,1,2,3,6,8,9]
bt = BTree(data)
print(bt.mid_order())
方法二(递归)
class TreeNode(object):
def __init__(self,data):
self.data = data
self.left = None
self.right = None
class BinaryTree(object):
def insert(self,root, node):
if root is None:
return node
if node.data < root.data:
root.left = self.insert(root.left, node)
else:
root.right = self.insert(root.right, node)
return root
def mid_order(self,root):
node = root
stack = []
res = []
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
res.append(node.data)
node = node.right
return res
data = [5,1,2,3,6,8,9]
root = TreeNode(data[0])
tree = BinaryTree()
for i in data[1:]:
tree.insert(root,TreeNode(i))
print(tree.mid_order(root))
来源:https://blog.csdn.net/EMIvv/article/details/122457325
0
投稿
猜你喜欢
- 前言数据处理过程中,经常会遇到数据有缺失值的情况,本文介绍如何用Pandas处理数据中的缺失值。一、什么是缺失值对数据而言,缺失值分为两种,
- 本文实例为大家分享了PyQt5实现暗黑风格的计时器的具体代码,供大家参考,具体内容如下主要是学习多线程知识,使用的是QTime(),但是似乎
- 官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ab
- aspImage是ServerObjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能,他的功能强大,如果你需
- 前言:我们常常想使用数组的方法,比如forEach,filter,又或者some等等来处理非数组的数据类型,那么在这些场景下,我们就需要将非
- CREATE PROCEDURE page @tblName varchar(255), -- 表名 @strGetFields varch
- 所以以 create_time datetime default now() 的形式设置默认值是不可能的。 代替的方案是使用TIMESTAM
- Scala 循环有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类
- 本文实例讲述了php+redis实现注册、删除、编辑、分页、登录、关注等功能。分享给大家供大家参考,具体如下:主要界面连接redisredi
- 引言本文将深入探讨Python语言中的核心概念:类(Class)和对象(Object)。我们将介绍这些基本概念,然后通过示例代码详细展示Py
- 大家可能经常会遇到这种情况:sql="select * from table"set rs=conn.execute(s
- 1.抽象类抽象类机制中总是要定义一个公共的基类,而将特定的细节留给继承者来实现。通过抽象概念,可以在开发项目中创建扩展性很好的架构。任何一个
- 制作爬虫的步骤制作一个爬虫一般分以下几个步骤:分析需求分析网页源代码,配合开发者工具编写正则表达式或者XPath表达式正式编写 python
- <?php/** * 网站地图更新控制器 * * &nbs
- request请求头信息的键会加上HTTP_转换成大写存到request.META中因此你只需要content_range = reques
- requests库简介requests 库是一个常用的用于 http 请求的模块,它使用 python 语言编写,可以方便的对网页进行爬取,
- 1、现象系统提示找不到指定的文件:Error running 'hello': Cannot run program &qu
- element-ui form或table lable换行问题今天在写项目,突然遇到个需求,需要将form里面的lable换行,百度了下,发
- 下面看下python调用函数加括号和不加括号的区别,具体代码如下所示; def bracket(data):return dat
- 在使用opencv显示图像时,有时候需要显示多张图像,就会出现多个窗口,显得冗余,用户不好操作。这时候就想着能不能将这些图像在一个窗口中显示