leetcode樹之二叉樹的全部路徑

本文主要記錄一下leetcode樹之二叉樹的全部路徑node

題目

給定一個二叉樹,返回全部從根節點到葉子節點的路徑。

說明: 葉子節點是指沒有子節點的節點。

示例:

輸入:

   1
 /   \
2     3
 \
  5

輸出: ["1->2->5", "1->3"]

解釋: 全部根節點到葉子節點的路徑爲: 1->2->5, 1->3

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/binary-tree-paths
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

題解

/**
 * 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> result = new ArrayList<>();

        if(root == null) {
            return result;
        }

        solve(root, "", result);

        return result;
    }

     public void solve(TreeNode root, String cur, List<String> result){
        if(root == null) {
            return;
        }

        cur += root.val;

        if(root.left==null && root.right==null) {
            result.add(cur);
            return;
        } 

        solve(root.left, cur+"->", result);
        solve(root.right, cur+"->", result);
    }
}

小結

這裏採用遞歸的思想,設計了solve方法,方法有個集合類型的參數用於收集路徑,另外還有一個參數用於表示路徑的前綴;每次執行solve方法都將當前節點的val追加在路徑前綴,在節點爲葉子節點時,將前綴添加到result中並返回;若不爲葉子節點則將->拼接到路徑前綴中,遞歸其左右子節點。網絡

doc