leetcode:129. Sum Root to Leaf Numbers
一、问题描述
给定一个只包含0-9数字的二叉树,每个根到叶子路径可以代表一个数字。一个例子是代表数字123的根到叶路径1-> 2-> 3。查找所有根到叶数量的总和。注意:叶子是没有孩子的节点。
【举例】
输入 [1,2,3]
1
/ \
2 3
输出:25
sum = 12 + 13 = 25.
输入: [4,9,0,5,1]
4
/ \
9 0
/ \
5 1
输出:1026
sum = 495 + 491 + 40 = 1026.
二、解题思路
左右子树分别递归转换成相应数字并求和
三、算法实现
/**************************************************
Author:tmw
date:2018-5-9
**************************************************/
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode
{
int val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
int dfs( TreeNode* root, int sum )
{
if( root == NULL ) return 0;
/**到叶子结点时**/
if( root->left == NULL && root->right == NULL )
return sum*10+root->val;
/**左右子树分别转换成相应数字并求和**/
return dfs(root->left,sum*10+root->val) + dfs(root->right,sum*10+root->val);
}
int sumNumbers(TreeNode* root)
{
return dfs( root, 0 );
}
四、执行结果
accpet
梦想还是要有的,万一实现了呢~~~ヾ(◍°∇°◍)ノ゙~~~