領釦(LeetCode)二叉樹的所有路徑 個人題解
阿新 • • 發佈:2018-11-11
給定一個二叉樹,返回所有從根節點到葉子節點的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
輸入: 1 / \ 2 3 \ 5 輸出: ["1->2->5", "1->3"] 解釋: 所有根節點到葉子節點的路徑為: 1->2->5, 1->3
本題有多種解法,可參考https://blog.csdn.net/xiezongsheng1990/article/details/79574892的程式碼。時間關係不累述。
遞迴演算法的程式碼如下:
1 class Solution { 2 List<String> ans = newLinkedList<>(); 3 4 public List<String> binaryTreePaths(TreeNode root) { 5 if (root == null) 6 return ans; 7 GoNext(root, String.valueOf(root.val)); 8 return ans; 9 10 } 11 12 public void GoNext(TreeNode t, String sans) { 13 if(t.left == null && t.right == null) { 14 ans.add(sans); 15 return; 16 } 17 if (t.left != null) { 18 GoNext(t.left, sans + "->" + t.left.val); 19 } 20 if (t.right != null) { 21 GoNext(t.right, sans + "->" + t.right.val);22 } 23 } 24 }