定义静态数组:tree=['']*n
根节点:tree[1]
节点tree[p]的左子节点:tree[2*p]
节点tree[p]的右子节点:tree[2*p+1]
def build(p,L,R):
if L==R:
if s[L]=='1':
tree[p]='I'
else:
tree[p]='B'
return
mid=(L+R)//2 #给出二叉树叶子节点,每次二分就是一层
build(2*p,L,mid)
build(2*p+1,mid+1,R)
if tree[2*p]=='B' and tree[2*p+1]=='B':
tree[p]='B'
elif tree[2*p]=='I' and tree[2*p+1]=='I':
tree[p]='I'
else:
tree[p]='F'
def postotder(p):
if tree[2*p]!='':postotder(2*p)
if tree[2 * p+1] != '': postotder(2 * p+1)
print(tree[p], end='')
n=int(input())
s=[0]+list(input())
tree=['']*4096
build(1,1,len(s)-1)
postotder(1)