题目要求: 对给定的有N个节点(N>=0)的二叉树,求叶节点元素之和。
输入格式:
第一行是一个非负整数N,表示有N个节点
第二行是一个整数k,是树根的元素值
接下来有N-1行,每行是一个新节点,格式为 r d e 三个整数,
r表示该节点的父节点元素值(保证父节点存在);d是方向,0表示该节点为父节点的左儿子,1表示右儿子;e是该节点的元素值。
输出格式:
树中叶节点元素之和 (保证在整型变量范围之内)。
输入样例:
对于图片中的二叉树:
3
20
20 0 10
20 1 25
输出样例:
35
#include <bits/stdc++.h>
using namespace std;
typedef struct
{
int fa;
int left_rigth;
int num;
int flag;
}TREE;
int main()
{
int num,father;
cin>>num>>father;
TREE tree[num+1];
for(int i=0;i<=num;i++)
{
tree[i].fa = -1;
tree[i].left_rigth = -1;
tree[i].num =-1;
tree[i].flag = 0;//有孩子变为1
}
//根节点
tree[1].num = father;
for(int i=2;i<=num;i++)
cin>>tree[i].fa>>tree[i].left_rigth>>tree[i].num;
for(int i=1;i<=num;i++)
{
for(int j=1;j<=num;j++)
{
if(tree[i].fa== tree[j].num)
tree[j].flag = 1;
}
}
int sum = 0;//求和
for(int i=1;i<=num;i++)
{
if(tree[i].flag!=1)
sum+=tree[i].num;
}
cout<<sum;
return 0;
}
这样写根本没有用到表示左右孩子的变量,不知道给出来是干嘛的……