1. 程式人生 > >LeetCode 257 二叉樹的所有路徑 (二叉數,遞迴)

LeetCode 257 二叉樹的所有路徑 (二叉數,遞迴)

1.二叉樹的所有路徑

給定一個二叉樹,返回所有從根節點到葉子節點的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 輸入:

   1
 /   \
2     3
 \
  5

輸出: [“1->2->5”, “1->3”] 解釋: 所有根節點到葉子節點的路徑為: 1->2->5, 1->3 思路:很常規的解法,其實一直在思考"->“怎麼來的,看了網上的答案,基本上是直接加一個”->"的字串。然後再利用遞迴直接遍歷就行了。

class Solution {
public:
    vector<string> binaryTreePaths(TreeNode* root) {
        if(root == NULL) return {};
        vector<string> treePaths;
        getTreePath(root,treePaths,"");
        return treePaths;
    }
    void getTreePath(TreeNode* root,vector<string> &treePaths,string str){
        str+=to_string(root->val);
        if(root->left==NULL && root->right==NULL){
            treePaths.push_back(str);
        }
        str+="->";
        if(root->left!=NULL){
            getTreePath(root->left,treePaths,str);
        }
        if(root->right!=NULL){
            getTreePath(root->right,treePaths,str);
        }
    }
};```