UVa699 - The Falling Leaves
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa699 - The Falling Leaves相关的知识,希望对你有一定的参考价值。
题意
给一棵二叉树,左子结点在父结点左边一个单位,右子节点在父节点的右边一个单位,按先序遍历的方式输入一棵树,-1为空结点,输出每列结点权值的和。
思路
递归建树
借了别人画的一个图
总结
目前还不怎么会二叉树_(:з」∠)_只能照着书上写一遍,现在做到的只是能理解,还不能自己写出这个
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 typedef long long LL; 6 const int maxn = 200; 7 int sum[maxn]; 8 using namespace std; 9 void build(int p) 10 { 11 int v; 12 cin >> v; 13 if(v == -1) return; 14 sum[p] += v; //每一列 15 build(p - 1); 16 build(p + 1); 17 } 18 bool init() 19 { 20 int v; 21 cin >> v; 22 if(v == -1) return false; 23 memset(sum,0,sizeof sum); 24 int pos = maxn / 2; 25 sum[pos] = v; 26 build(pos - 1); 27 build(pos + 1); 28 } 29 int main() 30 { 31 int kase = 0; 32 while(init()) { 33 int p = 0; 34 while(sum[p] == 0) p++; //找到最左边的一列 35 printf("Case %d:\\n%d",++kase,sum[p++]); 36 while(sum[p]) 37 printf(" %d",sum[p++]); 38 printf("\\n\\n"); 39 } 40 return 0; 41 }
以上是关于UVa699 - The Falling Leaves的主要内容,如果未能解决你的问题,请参考以下文章
UVA699 UVALive5471 The Falling Leaves树权和
下落的树叶 (The Falling Leaves UVA - 699)