DFS之根数和叶数相加

题目:给定0-9仅包含来自数字的二叉树,每个跟到叶路径可以表示数字,一个例子是1->2->3表示数字的root-to-leaf的路径123.求所有根到叶数的总和。叶子是没有子节点的节点。

示例:

思路:运用递归的方法,每个节点都有一个数值,总和就是依据每一个节点的值相加后得到的。因此进行深度递归,每个节点的数值等于上一个节点的数值乘以10加上该节点的数值,如果有子节点,再进行传递,这样,最终返回的数值就是要求的值。

不过有一个问题,这里没有规定该二叉树的深度,如果深度太长,那么会导致结果会超过int类型的数值范围。

代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int sumNumbers(TreeNode root)
	{
		return sum(root, 0);
		
	}
	
	public int sum(TreeNode node,int s)
	{
		if(node==null)
			return 0;
		else if(node.left==null&&node.right==null)
			return s*10+node.val;
		else
			return sum(node.left, s*10+node.val)+sum(node.right, s*10+node.val);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值