二叉樹中和為某一值的路徑(Java實現)
阿新 • • 發佈:2018-12-25
該題為劍指offer面試題25.
牛客網測試地址為:https://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca
[程式設計題]二叉樹中和為某一值的路徑- 參與人次:74300次時間限制:1秒空間限制:32768K
package go.jacob.day427; import java.util.ArrayList; public class Demo2 { /* * */ ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> list = new ArrayList<Integer>(); public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) { //如果根節點為空,直接返回 if (root == null) return lists; target -= root.val; list.add(root.val); //因為路徑是從根節點開始到葉子結點結束,所以必須有後面兩個判斷條件 if (target == 0 && root.left == null && root.right == null) //注意:這裡不能用 lists.add(list); lists.add(new ArrayList<Integer>(list)); FindPath(root.left, target); FindPath(root.right,target); //函式返回上一層,把改成的節點刪除。 list.remove(list.size()-1); //會返回給呼叫它的函式。所以只有main函式呼叫的FinfPath()會直接返回給主函式 return lists; } //樹節點類 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } }