DFS注意char(int + char) + string如何进行int->char+string连接

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35747066/article/details/89452276

988. Smallest String Starting From Leaf

Medium

11115FavoriteShare

Given the root of a binary tree, each node has a value from 0 to 25 representing the letters 'a' to 'z': a value of 0represents 'a', a value of 1 represents 'b', and so on.

Find the lexicographically smallest string that starts at a leaf of this tree and ends at the root.

(As a reminder, any shorter prefix of a string is lexicographically smaller: for example, "ab" is lexicographically smaller than "aba".  A leaf of a node is a node that has no children.)

Example 1:

Input: [0,1,2,3,4,3,4]
Output: "dba"

Example 2:

Input: [25,1,3,1,3,0,2]
Output: "adz"

Example 3:

Input: [2,2,1,null,1,0,null,0]
Output: "abc"
/**
 * 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:
    string smallestFromLeaf(TreeNode* root) {
        vector<string> Result;
        if(root == NULL){return "";}
        DFS(root,"",Result);
        sort(Result.begin(),Result.end());
        return Result[0];
    }
    void DFS(TreeNode* root,string Path,vector<string>& Result){
        if(root->left == NULL && root->right == NULL){
            Result.push_back(char(root->val + 'a') + Path);
        }
        if(root->left != NULL){
            DFS(root->left,char(root->val + 'a') + Path,Result);
        }
        if(root->right != NULL){
            DFS(root->right,char(root->val + 'a') + Path,Result);
        }
    }
};

猜你喜欢

转载自blog.csdn.net/qq_35747066/article/details/89452276