zoukankan      html  css  js  c++  java
  • 打印二叉树节点数值总和等于某个给定节点的所有路径

    打印二叉树节点数值总和等于某个给定节点的所有路径,路径可以从任意节点开始,任意节点结束。

    比如,假设和是8,树如下 的路径有  [[5,3],[8],[5,1,2]]。

        5

       /

        3     1

       /     /

     4  8  2   6

    思路:遍历所有路径,对于每一个节点,在其路径中向后寻找sum和为target的路径加入到结果中。

    public List<List<Integer>> findSum(TreeNode root,int sum){
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> tmp = new ArrayList<Integer>();
        find(res,tmp,root,sum);
        return res;
    }
    
    private void find(List<List<Integer>> res, List<Integer> tmp, TreeNode root, int sum){
        if(root==null)
            return;        
        tmp.add(root.val);
        
        //for each node
        int tmpSum=0;
        for(int i=tmp.size()-1;i>=0;i--){
            tmpSum+=tmp.get(i);
            if(tmpSum==sum){
                res.add(i,tmp);   
            }
                
        }    
        
        find(res,tmp,root.left,sum);
        find(res,tmp,root.right,sum);
        tmp.remove(tmp.size()-1);
        
    }
  • 相关阅读:
    1-4-04:奇偶ASCII值判断
    1-4-03:奇偶数判断
    1-4-02:输出绝对值
    1-4-01:判断数正负
    1-3-20:计算2的幂
    1-3-19:A*B问题
    1-3-18:计算三角形面积
    Use PIVOT Table in SQL Server
    Pivoting DataTable Simplified
    Pivot Methods 行列转换
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3930384.html
Copyright © 2011-2022 走看看