【LeetCode】257.二叉樹的所有路徑

【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()就可以了)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章