【LeetCode】257.二叉樹的所有路徑
題目描述
給定一個二叉樹,返回所有從根節點到葉子節點的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
輸入:
1
/ \
2 3
\
5
輸出: [“1->2->5”, “1->3”]
解釋: 所有根節點到葉子節點的路徑爲: 1->2->5, 1->3
解題思路
二叉樹的題目解題思路都差不多,總得來說,第一步先判斷根是否爲空,然後遞歸搜索左右子樹
此題還有個關鍵是要輸出的是帶“->”箭頭的字符串。因此考慮用ArrayList來存儲這一結構。
代碼
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> ret=new ArrayList<>();
if(root==null) return ret;
solve(root,"",ret);
return ret;
}
public void solve(TreeNode root, String cur, List<String> ret){
if(root==null) return;
cur+=root.val;
if(root.left==null&&root.right==null){
ret.add(cur);
}
else{
solve(root.left,cur+"->",ret);
solve(root.right,cur+"->",ret);
}
}
}
總結
二叉樹類題目的簡單題,箭頭的處理和子節點數值的加入很重要,需要活用Java的數據結構(當然如果是Python的話,直接用List的.append()就可以了)