1371 求根到叶子结点数字之和
-
描述: 给定一个二叉树,它的每个结点都存放一个1-9的数字,每条从根到叶子节点的路径都代表一个数字。
例如,从根到叶子节点路径 1->2->3 代表数字 123。
计算从根到叶子节点生成的所有数字之和,答案保证在int范围。 -
输入:输入一行,按照先序输入一棵二叉树,其中空节点用 -1 表示。
-
输出:输出根到叶子节点生成的所有数字之和。
-
输入示例
1 2 -1 -1 3 4 -1 -1 -1
-
输出示例
146
-
代码块
#include<bits/stdc++.h> using namespace std; typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; BiTNode *BuildTree(){ int data; scanf("%d", &data); if(data == -1) return NULL; BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode)); p->data = data; p->lchild = BuildTree(); p->rchild = BuildTree(); return p; } int result = 0; void Sum(BiTree T, int sum){ if(T == NULL){ return; } sum = sum*10 + T->data; if(T->lchild == NULL && T->rchild == NULL) result = result + sum; Sum(T->lchild, sum); Sum(T->rchild, sum); } int main(){ BiTree T = BuildTree(); Sum(T, 0); printf("%d\n", result); system("pause"); return 0; }