1. 程式人生 > 實用技巧 >LeetCode 每日一題 257.二叉樹的所有路徑

LeetCode 每日一題 257.二叉樹的所有路徑

257.二叉樹的所有路徑

題目連結:257.二叉樹的所有路徑

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

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

示例:

**輸入:**

   1
 /   \
2     3
 \
  5

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

**解釋:** 所有根節點到葉子節點的路徑為: 1->2->5, 1->3

我的題解

#pragma G++ optimize(2)
#pragma GCC optimize(2)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
 public:
  vector<string> ans;
  int gao(TreeNode* u, vector<int>& vec) {
    vec.emplace_back(u->val);
    if (u->left == nullptr && u->right == nullptr) {
      string s;
      s += to_string(vec[0]);
      for (int i = 1; i < vec.size(); i++) {
        s += "->";
        s += to_string(vec[i]);
      }
      ans.emplace_back(s);
    } else {
      if (u->left) gao(u->left, vec);
      if (u->right) gao(u->right, vec);
    }
    vec.pop_back();
    return 0;
  }
  vector<string> binaryTreePaths(TreeNode* root) {
    ans.clear();
    vector<int> st;
    if (root == nullptr) return ans;
    gao(root, st);
    return ans;
  }
};