题解 | #二叉树根节点到叶子节点的所有路径和#
二叉树根节点到叶子节点的所有路径和
http://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83
c语言
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型
*/
int sumNumbers(struct TreeNode* root ) {
// write code here
return preorder(root,0);
}
int preorder(struct TreeNode* root,int sum){
if(root==NULL){
return NULL;
}//处理最开始的节点是否为空,和当遇见一个节点只有一个子节点时的情况
sum=sum*10+root->val;//进行路径累加
if(root->left==NULL&&root->right==NULL){
return sum;
}//叶子结点
return preorder(root->left,sum)+preorder(root->right, sum);//进行递归
}