全部评论
后面应该是3吧,怎么会是9呢
满二叉树?
如果是二叉搜索树就可以了
关键给的案例也不是满二叉树啊
二叉搜索树或者是他把空节点用特殊符号表现出来的话也行做
4 的 中序遍历序列后面怎么是 9,没搞懂。
就很迷
这题目出的,数据结构基础就这水平吗。。。马蜂窝。。
层次遍历 不是前序遍历 我a了
后面改了,贴个代码吧,可惜有一组越界的错误最后才发现少了个-1 import sys
line = sys.stdin.readline()
l = list(map(int, line.strip().split(",")))
index = int(sys.stdin.readline().strip())
x = 0
while True:
if 2 ** x > len(l):
break
x += 1
l2 = [0] * len(l)
down = True
xx = 0
plus = 0
for i in range(len(l)-1):
if 2**xx+plus-1>=len(l)-1:
down = False
xx-=1
plus += 1
while 2**xx+plus >= 2**(xx+1):
if down:
xx += 1
if xx == x:
xx = x-1
down = False
plus += 1
else:
xx -= 1
if xx == -1:
xx = 0
down = True
plus += 1
l2[2**xx+plus-1] = l[i]
if down:
xx += 1
if xx == x:
xx = x - 1
down = False
plus += 1
else:
xx -= 1
if xx == -1:
xx = 0
down = True
plus += 1
l2[2**xx-2] = l[-1]
for i in range(1, len(l2)):
if l2[i] == index:
print(l2[i-1])
sys.exit(0)
print(-1)
可以的,根据总节点数量可以算出来左子树右子树节点数量,然后拼个树
做到一半该题目的哈哈哈哈,贴个代码,84%后改的,改完没时间测了 import sys
def postNext(pre, k):
size = len(pre) - 1
if 2 * k + 1 <= size:
k = 2 * k + 1
while k * 2 <= size:
k = k * 2
return pre[k]
while k % 2 != 0 and k > 1:
k = k // 2
if k > 1:
return pre[k // 2]
return -1
if __name__ == "__main__":
line = sys.stdin.readline()
pre = [0] + list(map(int,line.strip().split(',')))
k = int(input())
print(postNext(pre, k))
相关推荐
02-14 23:19
门头沟学院 Java 点赞 评论 收藏
分享
02-14 11:30
华南农业大学 Java 点赞 评论 收藏
分享
02-05 08:18
四川大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享