面試題:二叉樹中和為某一路徑
阿新 • • 發佈:2018-08-25
color target size 必須 amp code ger 試題 註意
題目描述:輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(註意: 在返回值的list中,數組長度大的數組靠前)
思路1:遞歸
import java.util.ArrayList; public class Solution { //如果放在裏面的話每次遞歸的時候就會重新new一個listALL和list, //這樣會把上一步的結果覆蓋,所以必須寫在外面 ArrayList<ArrayList<Integer>> listAll=new ArrayList<>(); ArrayList<Integer> list=new ArrayList<>(); public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) { if(root==null) return listAll; list.add(root.val); target=target-root.val; //表示建立新表 原來的已經是一條路徑 if(target==0&&root.left==null&&root.right==null) listAll.add(new ArrayList<Integer>(list)); FindPath(root.left,target); FindPath(root.right,target); list.remove(list.size()-1); return listAll; } }
思路2:帶記憶的DFS
面試題:二叉樹中和為某一路徑