LeetCode - sum-root-to-leaf-numbers

题目:

Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.

An example is the root-to-leaf path1->2->3which represents the number123.

Find the total sum of all root-to-leaf numbers.

For example,

    1
   / \
  2   3

 

The root-to-leaf path1->2represents the number12.
The root-to-leaf path1->3represents the number13.

Return the sum = 12 + 13 =25.

大概意思:

给定一个只包含0-9位数字的二叉树,每个根到叶的路径都可以表示一个数字。

一个例子是根到叶的路径1->2->3,它表示数字123。

求从根节点到叶子节点的值的和。

解题思路:

先序遍历+数字求和(每一层都比上层和*10+当前根节点的值)

如果遍历到叶子节点,就把当前累加的结果sum返回,如果不是就对左右子节点调用递归函数,将两结果相加返回

需要注意的是sum不能是全局变量,需要遍历某一边之后将其置1

如果节点数超过个位数,那么这个方法也是不管用了

 

代码如下:

     public int sumNumbers(TreeNode root) {
		 if(root == null ) {
			 return 0;
		 }
		 
		 int sum =0;
		return DFS(root,sum);
	        
	 }
	 
	 public int DFS(TreeNode root,int sum) {
		if(root == null) {
			return 0;
		}
		sum = sum*10 + root.val;
		
		
		if(root.left == null && root.right == null) {
			return sum;
		}
		
		return DFS(root.left,sum)+DFS(root.right,sum);
		
		 
	 }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值