请帮我用python代码实现以下问题按输入顺序建立二叉搜索树,并搜索某一结点,输出其父结点。 输入格式: 第一行是n值,表示有n个结点; 后面输入n行,每行代表一个结点的数据值; 最后一行是x,表示要搜索值为x的结点的父结点。 输出格式: 输出值为x的结点的父结点的值。 若值为x的结点不存在,则输出:It does not exist. 若值为x的结点是根结点,则输出:It doesarent. 输入样例: 2 20 30 20 输出样例: It doesn't have pan't have prent. ###输入样例: 2 20 30 30 输出样例: 20
时间: 2024-02-11 10:05:56 浏览: 59
Python实现二叉搜索树
5星 · 资源好评率100%
好的,这里是 Python 代码实现:
```python
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(value, self.root)
def _insert(self, value, current_node):
if value < current_node.value:
if current_node.left is None:
current_node.left = Node(value)
else:
self._insert(value, current_node.left)
elif value > current_node.value:
if current_node.right is None:
current_node.right = Node(value)
else:
self._insert(value, current_node.right)
else:
print("Value already exists in BST.")
def search_parent(self, value):
if self.root is None:
print("BST is empty.")
else:
parent = self._search_parent(value, self.root, None)
if parent is None:
print("It does not exist.")
elif parent == self.root:
print("It doesn't have parent.")
else:
print(parent.value)
def _search_parent(self, value, current_node, parent):
if current_node is None:
return None
elif value == current_node.value:
return parent
elif value < current_node.value:
return self._search_parent(value, current_node.left, current_node)
else:
return self._search_parent(value, current_node.right, current_node)
# 读取输入数据
n = int(input())
bst = BST()
for i in range(n):
value = int(input())
bst.insert(value)
x = int(input())
# 查找父节点并输出结果
bst.search_parent(x)
```
注意:输入样例中的输出结果有误,已经进行了修改。
阅读全文