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;
  }
};
posted @ 2020-09-04 10:19  菁芜  阅读(170)  评论(0编辑  收藏  举报