LeetCode(257)二叉树的所有路径

注意二叉树的深度遍历即先序、中序、后序遍历之一,sprintf中char c[n]的长度包括'\0'即数字的长度+1,在数字是-100时最长,长度为4+1即5,char c[4]会溢出

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<TreeNode*>v;
    vector<string>v2;
    vector<string> binaryTreePaths(TreeNode* root) {
        dfs(root);
        return v2;
    }
    void dfs(TreeNode*root){
        if(root){
            v.push_back(root);
            if(root->left==nullptr&&root->right==nullptr){
                string s;
                for(int i=0;i<v.size();i++){
                    char c[5];
                    sprintf(c,"%d",v[i]->val);
                    s += c;
                    s += "->";
                }
                s.erase(s.size()-2,2);
                v2.push_back(s);
            }
            dfs(root->left);
            dfs(root->right);
            v.pop_back();
        }
    }
};

 

posted @ 2022-05-20 15:44  智人心  阅读(23)  评论(0)    收藏  举报