您的位置:首页 > 编程语言 > Java开发

leetcode129 Sum Root to Leaf Numbers java 算法

2016-07-28 13:30 573 查看
题目描述:计算从根节点到叶节点的路径构成的数字的和。

算法描述:递归

代码如下:

public static int  sumNumbers(TreeNode root) {

        if(root==null){

            return 0;

        }

        List<List<Integer>> result = new ArrayList<List<Integer>>();//这两个list可以帮助我们查看从根节点到叶节点有哪些路径

        List<Integer> ls = new ArrayList<Integer>();

        int sum = 0;

        return (findAll(root,result,ls,sum,0));

    }

    public static int  findAll(TreeNode root,List<List<Integer>> result,List<Integer> ls,int sum,int cur){

        if(root.left==null && root.right==null){

            ls.add(root.val);

            int tt = cur;

            cur = cur*10+root.val;

            List<Integer> temp = new ArrayList<Integer>(ls);

            result.add(temp);

            System.out.println(cur);

            sum = sum+cur;

            ls.remove(ls.size()-1);

            return cur;

        }

        int sum1 = 0;

        int sum2 = 0;

        if(root.left!=null){

            ls.add(root.val);

            sum1 = findAll(root.left,result,ls,sum,cur*10+root.val);

            ls.remove(ls.size()-1);

        }

        if(root.right!=null){

            ls.add(root.val);

            sum2 = sum + findAll(root.right,result,ls,sum,cur*10+root.val);

            ls.remove(ls.size()-1);

        }

        return sum1+sum2;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode 算法 递归