6_10 下落的树叶(UVa699)<二叉树的DFS>

每年到了秋天树叶渐渐染上鲜艳的颜色,接着就会落到树下来。假如落叶发生在二叉树,那会形成多大的树叶堆呢?
我们假设二叉树中的每个节点所落下的叶子的数目等于该节点所储存的值。我们也假设叶子都是垂直落到地面上(真感谢没有风把他们吹的到处都是)。最后,我们再假设节点之间水平的距离是以下列方式定义:某个节点到其左子树以及到其右子树的水平距离均为1。以下图来说明:

含有5和含有6的节点位于同一水平位置(当然,他们垂直的位置不同)。含有7的节点位于含有5的节点和含有6的节点左边一个位置。而含有3的节点则位于含有5的节点和含有6的节点右边一个位置。当叶子开始落下时,上面的树会在地面上形成3堆树叶。最左边那一堆有7片叶子(从最左边那个节点产生的),再来的一堆含有11片叶子(从含有5及含有6这两个节点产生的),最右边的一堆则含有3片叶子(从最右边那个节点产生的)。
Input
输入含有多组测试数据。
每组测试数据代表一棵树。描述树的方法为给你根(root)的值,然后描述左子树,然后描述右子树。假如一个子树是空的,其值为-1。因此,上图的树可描述为:5 7 -1 6 -1 -1 3 -1 -1。每个真实的节点含有一个大于0的值。
输入的最后一棵树其根的值为-1,代表输入结束(此树不用输出),请参考Sample Input。
Output
对每组测试数据输出3列,第1列输出这是第几组测试数据。第二列输出落叶所形成的树叶堆所含的叶片。由左到右,树叶堆之间以一空格相隔,长度不会超过80个字元。第三列为一空白列。请参考Sample Output。

Sample Input
5 7 -1 6 -1 -1 3 -1 -1
8 2 9 -1 -1 6 5 -1 -1 12 -1
-1 3 7 -1 -1 -1
-1

 Sample Output

Case 1:
7 11 3

Case 2:
9 7 21 15

原文地址:https://www.cnblogs.com/jjzzx/p/5532548.html