#P5068. 下落的树叶
下落的树叶
题目描述
每年,中北部地区的秋天都伴随着树上叶子的绚烂色彩,紧接着是树下堆积的落叶。如果同样的事情发生在二叉树上,那么成堆的叶子会变得多大?
我们假设二叉树中的每个节点都 “丢弃” 了一些叶子,这些叶子等于存储在该节点中的整数值。我们还假设这些叶子垂直落在地上(谢天谢地,没有风吹它们)。最后,我们假设节点以这样的方式水平定位,即节点的左和右子节点分别是其父节点的左一个单元和右一个单元。考虑右侧的以下树:
包含 和 的节点具有相同的水平位置(当然,垂直位置不同)。包含 的节点是包含 和 的节点左侧的一个单元,包含 的节点是其右侧的一个单元。当 “叶子” 从这些节点落下时,会创建三个堆:最左边的一个包含 个叶子(来自最左边的节点),下一个包含 个(来自包含 和 的节点),最右边的一个包含 个。(虽然树中只有叶节点在逻辑上才有叶,但在这个问题中我们忽略了这一点。)
输入格式
一棵树,树的大小不超过 个节点。树是通过在根节点中给定值,然后是左子树的描述,然后是右子树的描述来指定的。如果子树为空,则提供值 。因此,上面显示的树被指定为 5 7 -1 6 -1 -1 3 -1 -1
。
输出格式
从左到右显示每堆中的 “叶子” 数,每个值之间用一个空格分隔。此显示必须从第 列开始。
5 7 -1 6 -1 -1 3 -1 -1
7 11 3