QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#873866 | #3445. Numbers On a Tree | fernandes_queila | WA | 10ms | 8832kb | Python3 | 2.7kb | 2025-01-27 03:35:08 | 2025-01-27 03:35:08 |
Judging History
answer
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
self.height = 1
class AVLTree:
def __init__(self):
self.root = None
def get_height(self, node):
if not node:
return 0
return node.height
def update_height(self, node):
if node:
node.height = 1 + max(self.get_height(node.left), self.get_height(node.right))
def balance_factor(self, node):
if not node:
return 0
return self.get_height(node.left) - self.get_height(node.right)
def rotate_right(self, y):
x = y.left
T2 = x.right
x.right = y
y.left = T2
self.update_height(y)
self.update_height(x)
return x
def rotate_left(self, x):
y = x.right
T2 = y.left
y.left = x
x.right = T2
self.update_height(x)
self.update_height(y)
return y
def balance(self, node):
if not node:
return node
self.update_height(node)
balance = self.balance_factor(node)
if balance > 1:
if self.balance_factor(node.left) < 0:
node.left = self.rotate_left(node.left)
return self.rotate_right(node)
if balance < -1:
if self.balance_factor(node.right) > 0:
node.right = self.rotate_right(node.right)
return self.rotate_left(node)
return node
def insert(self, node, value):
if not node:
return TreeNode(value)
if value < node.value:
node.left = self.insert(node.left, value)
else:
node.right = self.insert(node.right, value)
return self.balance(node)
def search_node(self, height, road=""):
root = (2 ** (height + 1)) - 1
if not road:
return root
node = self.root
for move in road:
if move.lower() == 'l':
if node.left:
node = node.left
else:
return -1
elif move.lower() == 'r':
if node.right:
node = node.right
else:
return -1
return node.value if node else -1
def insert_root(self, value):
self.root = self.insert(self.root, value)
def main():
avl_tree = AVLTree()
line = input().strip()
parts = line.split()
height = int(parts[0])
road = parts[1] if len(parts) > 1 else ""
# Inserir n\xf3s na \xe1rvore com base na altura
num_nodes = (2 ** (height + 1)) - 1
for i in range(1, num_nodes + 1):
avl_tree.insert_root(i)
print(avl_tree.search_node(height, road))
main()
详细
Test #1:
score: 0
Wrong Answer
time: 10ms
memory: 8832kb
input:
3 LR
output:
6
result:
wrong answer 1st lines differ - expected: '11', found: '6'