大致题意
根据给出的序列计算二叉树重叠最后重叠数值
解题思路
二叉树基础题,虽然是基础题还是不会
这题可以不用建树
可以直接根据序列累加
开个数组就好了,然后读取序列,第一个是根节点,然后就是根节点的左子树,可以将其左子树节点当做根节点递归建树,如果是 -1 就是左子树为空,接下来的值就是根节点的右子树,也同样的递归建树
*构建代码如下
void calc(int center){
sum[center] += inorder[nowindex++];
if (inorder[nowindex] != -1) //判断左子树,左子树非空,以左子树为中心节点建树
calc(center - 1);
else
nowindex++;
if (inorder[nowindex] != -1) //判断右子树,右子树非空,以右子树为中心节点建树
calc(center + 1);
else
nowindex++;
return;
}
这题没有很难,明明就是很难
难点还是分析递归过程8