1. 程式人生 > 其它 >112. 路徑總和/257. 二叉樹的所有路徑

112. 路徑總和/257. 二叉樹的所有路徑

給你二叉樹的根節點root 和一個表示目標和的整數targetSum ,判斷該樹中是否存在 根節點到葉子節點 的路徑,這條路徑上所有節點值相加等於目標和targetSum 。

葉子節點 是指沒有子節點的節點。

示例 1:


輸入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
輸出:true

   public boolean hasPathSum(TreeNode root, int targetSum) {
        if(root==null){
            return false;
        }
        if(root.left==null && root.right==null){
           return targetSum-root.val==0;
        }
        return hasPathSum(root.left,targetSum-root.val) || hasPathSum(root.right,targetSum-root.val);
    }

  

257. 二叉樹的所有路徑

給你一個二叉樹的根節點 root ,按 任意順序 ,返回所有從根節點到葉子節點的路徑。

葉子節點 是指沒有子節點的節點。


示例 1:


輸入:root = [1,2,3,null,5]
輸出:["1->2->5","1->3"]
示例 2:

輸入:root = [1]
輸出:["1"]

public List<String> binaryTreePaths(TreeNode root) {
        List<String> res=new ArrayList<>();
        process(root,res,"");
        return res;
    }

    private void process(TreeNode root,List<String> res,String path){
        if(root==null){
            return;
        }
        path+=root.val;
        if(root.left==null && root.right==null){
            res.add(path);
            return;
        }    
        process(root.left,res,path+"->");
        process(root.right,res,path+"->");
    }