Smallest String Starting From Leaf
Description
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.)
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"
Note:
- The number of nodes in the given tree will be between
1
and8500
. - Each node in the tree will have a value between
0
and25
.
Solution(javascript)
const smallestFromLeaf = function (root) {
let min = null
const aux = (node = root, current = '') => {
const str = String.fromCharCode(97 + node.val) + current
if (!node.left && !node.right) {
if (!min) {
min = str
} else {
min = str.localeCompare(min) < 0 ? str : min
}
}
if (node.left) {
aux(node.left, str)
}
if (node.right) {
aux(node.right, str)
}
}
aux()
return min
}