IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]LeetCode -- Sum Root to Leaf Numbers

    csharp25发表于 2015-11-17 11:32:10
    love 0
    题目描述:


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


    An example is the root-to-leaf path 1->2->3 which represents the number 123.


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


    For example,


        1
       / \
      2   3
    The root-to-leaf path 1->2 represents the number 12.
    The root-to-leaf path 1->3 represents the number 13.


    Return the sum = 12 + 13 = 25.


    思路:
    DFS问题,即从根节点出发进入统计(存为string s),如果左节点不为空,进入左子树统计;如果右子树不为空进入右子树统计。如果是叶子节点,记录状态放入总结果(List<string> result)。
    遍历完之后,再遍历一遍result转为整形累加计算结果即可。


    实现代码:


    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left;
     *     public TreeNode right;
     *     public TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int SumNumbers(TreeNode root) 
        {
            if(root == null){
        		return 0;
        	}
             var ret = new List<string>();
             Sum(root, "",ref ret);
             
             var s = 0;
             for(var i = 0;i < ret.Count; i++){
             	 s += int.Parse(ret[i]);
             }
             
             return s;
        }
    
    
    private void Sum(TreeNode root, string s,ref List<string> result)
    {
    	if(root.left == null && root.right == null){
    		result.Add(s + root.val);
    		return;
    	}
    	
    	if(root.left != null){
    		Sum(root.left, s + root.val, ref result);
    	}
    	if(root.right != null){
    		Sum(root.right, s + root.val, ref result);
    	}
    }
    }




沪ICP备19023445号-2号
友情链接