我用python编写了一个简单的代码,用于在二叉搜索树中给定树的前序到树的后序遍历。在我的编译器中,一切正常,但在将其上载到联机编译器时,它显示:
运行时错误: 运行时错误回溯(最后一次调用): 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第31行,在 前序到后序(arr,n,0) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第24行,在预订单到后订单中 前序到后序(右、列(右)、计数器) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第21行,在预订单到后订单中 前序到后序(左、长(左)、计数器) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第21行,在预订单到后订单中 前序到后序(左、长(左)、计数器) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第21行,在预订单到后订单中 前序到后序(左、长(左)、计数器) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第21行,在预订单到后订单中 前序到后序(左、长(左)、计数器) 文件“/home/6cc826a55a3c8565281b5fa09fe07720.py”,第21行,在预订单到后订单中 前序到后序(左、长(左)、计数器) 文件“/home/6cc826a55a3
这是问题https://practice.geeksforgeeks.org/problems/preorder-to-postorder/0的链接 当我编译和测试代码时,它工作得很好,但是当我提交代码时,它以同样的方式显示了上面的错误,就像我在上面发布的那样。 请帮忙
这是我的密码:
def preorder_to_postorder(arr, n, counter):
left = []
right = []
temp = arr.pop(0)
parent.append(temp)
if len(arr) == 1:
while counter > 0:
arr.append(parent.pop())
counter -= 1
for j in range(len(arr)):
print(arr[j], end=" ")
for i in range(0, n-1):
if arr[i] < temp:
left.append(arr[i])
else:
right.append(arr[i])
if len(left) > 1:
counter += 1
preorder_to_postorder(left, len(left), counter)
if len(right) > 1:
counter += 1
preorder_to_postorder(right, len(right), counter)
t = int(input())
parent = []
for k in range(t):
n = int(input())
arr = list(map(int, input().strip().split()))
preorder_to_postorder(arr, n, 0)
print()
因此,在运行时,代码的逻辑存在一些问题
N=1
您将从arr弹出,其大小将变为0,并且您没有对此进行检查
当您的代码失败时,有一种特殊情况 当N=3时,arr=[2,1,3]种输入 理想情况下,它应该打印1,3,2,但检查您的代码正在打印什么
我不知道为什么您使用计数器和父变量使这变得如此复杂,而您可以编写这样简单的东西
在解决问题的时候,总是尝试一些极端的情况
相关问题 更多 >
编程相关推荐