二叉树(C语言)

Python011

二叉树(C语言),第1张

int pp(char *a, char *b, int l)

{

int i

for (i=0i<li++)

{

if (b[i] == a[0])

break

}

if (l == i)

return 0

pp(a+1, b, i)

pp(a+i+1, b+i+1, l-i-1)

printf("%c", b[i])

return 0

}

int main()

{

char a[32]

char b[32]

int l

printf("请输入前序、中序遍历结果:")

scanf("%s %s", a, b)

l = strlen(b)

if (l != strlen(a))

return 1

printf("后序遍历结果是:")

pp(a, b, l)

printf("\n")

return 0

}

对于你的这种情况我觉得比较适合用数组来实现。对于长度为t的输入,申请类型为Node、长度为t的数组nodeArray[t],然后进行两次遍历。

第一次,nodeArray[i].data对应输入的第i个字符,nodeArray[i].lchild和rchild都为空;(如果输入#则nodeArray[i]=null)

第二次,在[0, n-1]的范围内,令nodeArray[i].lchild = &(nodeArray[i * 2]),nodeArray[i].rchild = &(nodeArray[i * 2 + 1])。

完成后,nodeArray[0]即为所求二叉树。

应该有办法一次遍历就构造好这棵树,懒得想了。