请写一个利用二叉树选股票的python脚本
时间: 2023-07-16 12:17:01 浏览: 41
好的,下面是一个简单的利用二叉树选股票的Python脚本:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class Stock:
def __init__(self, name, price):
self.name = name
self.price = price
class StockTree:
def __init__(self):
self.root = None
def insert(self, stock):
if not self.root:
self.root = TreeNode(stock)
else:
self._insert(stock, self.root)
def _insert(self, stock, node):
if stock.price < node.val.price:
if not node.left:
node.left = TreeNode(stock)
else:
self._insert(stock, node.left)
else:
if not node.right:
node.right = TreeNode(stock)
else:
self._insert(stock, node.right)
def inorder_traversal(self):
stocks = []
self._inorder_traversal(self.root, stocks)
return stocks
def _inorder_traversal(self, node, stocks):
if node:
self._inorder_traversal(node.left, stocks)
stocks.append(node.val)
self._inorder_traversal(node.right, stocks)
def search(self, min_price, max_price):
stocks = []
self._search(self.root, min_price, max_price, stocks)
return stocks
def _search(self, node, min_price, max_price, stocks):
if node:
if min_price <= node.val.price <= max_price:
stocks.append(node.val)
if node.val.price > min_price:
self._search(node.left, min_price, max_price, stocks)
if node.val.price < max_price:
self._search(node.right, min_price, max_price, stocks)
# 测试代码
tree = StockTree()
tree.insert(Stock("AAPL", 120.0))
tree.insert(Stock("GOOG", 200.0))
tree.insert(Stock("TSLA", 300.0))
tree.insert(Stock("AMZN", 400.0))
print("所有股票按价格排序:")
for stock in tree.inorder_traversal():
print(stock.name, stock.price)
print("查找价格在 150 到 350 之间的股票:")
for stock in tree.search(150, 350):
print(stock.name, stock.price)
```
这个脚本定义了一个`Stock`类,包含股票的名称和价格。然后定义了一个`TreeNode`类,用于构造二叉树。最后,定义了一个`StockTree`类,用于存储股票信息并进行查找。其中,`insert()`方法用于插入一个股票,`inorder_traversal()`方法用于遍历所有的股票并按照价格排序,`search()`方法用于查找价格在指定范围内的股票。
在测试代码中,构造了一个`StockTree`对象并插入了4只股票。然后按照价格排序并打印出来。最后,查找价格在150到350之间的股票并打印出来。