LC 988. Smallest String Starting From Leaf
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 0
represents '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.)
Runtime: 4 ms, faster than 100.00% of C++ online submissions for Smallest String Starting From Leaf.
Memory Usage: 884.7 KB, less than 100.00% of C++ online submissions for Smallest String Starting From Leaf.
class Solution { public: string smallestFromLeaf(TreeNode* root) { vector<string> a; helper(root, a, ""); sort(a.begin(), a.end()); return a[0]; } void helper(TreeNode* root, vector<string>& a, string parent){ if(!root) return; string tmpc(1,(char)('a'+root->val)); string tmps = tmpc + parent; if(!root->left && !root->right){ a.push_back(tmps); return; } helper(root->left, a, tmps); helper(root->right, a, tmps); } };